use*_*454 0 unix shell awk sed
我有以下 CSV 文件:
ID,COUNTRY,DESCRIPTION,PRICE
1,USA,Short description,11
2,UK,"Description with comma , inside",2.3
Run Code Online (Sandbox Code Playgroud)
因此,如果字段包含逗号,则将其放在双引号中。
如何将分隔符从逗号替换为制表符但忽略引号中的逗号?所以我会有:
ID COUNTRY DESCRIPTION PRICE
1 USA Short description 11
2 UK "Description with comma , inside" 2.3
Run Code Online (Sandbox Code Playgroud)
或不带双引号:
ID COUNTRY DESCRIPTION PRICE
1 USA Short description 11
2 UK Description with comma , inside 2.3
Run Code Online (Sandbox Code Playgroud)
在我注意到某些字段包含逗号之前,我使用了此代码:
$VAR='\t'
sed -i $"s/,/$VAR/" $FILE_NAME
Run Code Online (Sandbox Code Playgroud)
对于 GNU awk,您能否尝试使用所示示例编写以下内容(如果您想在 Input_file 本身中进行编辑,则也可以附加 > temp && mv temp Input_file以下解决方案)。
awk -v FPAT='[^,]*|"[^"]+"' -v OFS="\t" '{$1=$1}1' Input_file
Run Code Online (Sandbox Code Playgroud)
或"从行的字段的开头和结尾删除,然后运行以下内容。
awk -v FPAT='[^,]*|"[^"]+"' -v OFS="\t" '
{
for(i=1;i<=NF;i++){
gsub(/^"|"$/,"",$i)
}
$1=$1
}
1
' Input_file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |