cat bash命令将制表符转换为逗号分隔并用双引号引起来

杰伊·基林(Jay Killeen)

我有以下数据(作为示例)

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章