我有以下数据(作为示例)
name street suburb
Todd Man 14 Streety Road Townsville
Cheryl Lady 15 Roady Street Villatown
Girl, Sara 16 Circus Circuit Groundston
并使用此命令从一个制表符转换为逗号分隔的csv
cat customers.csv | tr '[\t]' '[,]' > customers_comma.csv
输出是
name,street,suburb
Todd Man,14 Streety Road,Townsville
Cheryl Lady,15 Roady Street,Villatown
Girl, Sara,16 Circus Circuit,Groundston
但是Girl, Sara
要增加一个额外的列。我怎么做所以输出是
name,street,suburb Todd Man,14 Streety Road,Townsville Cheryl Lady,15 Roady Street,Villatown "Girl, Sara",16 Circus Circuit,Groundston
似乎很简单,但是Google对此一无所知,找不到解决方案。
我不必使用,cat
但想是否有一行bash命令来执行此操作。
这是一个有点awk的解决方案:
awk 'BEGIN{FS="\t";OFS=",";Q="\""}
{for (i=1;i<=NF;++i)
if ($i ~ /[",]/)
$i = Q gensub(/"/,Q Q,"g",$i) Q
}
{$1 = $1}
1' file.txt
如果在字段中找到引号,它也会加倍引号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句