【问题标题】:How to insert columns into a CSV file using awk如何使用 awk 将列插入 CSV 文件
【发布时间】:2013-10-13 18:28:42
【问题描述】:

我想使用 sed 将一些列添加到下面的带有默认值的 csv 文件中。

我的文件是这样的:

40,2012-05-30,London,61,Sunny
41,2012-02-22,Moscow,11,Snow
54,2012-04-10,Tokyo,02,Sunny

我希望输出是:

40,2012-05-30,NULL,London,NULL,NULL,61,Sunny,Tom
41,2012-02-22,NULL,Moscow,NULL,NULL,11,Sunny,Tom
54,2012-04-10,NULL,Tokyo,NULL,NULL,02,Sunny,Tom

获得所需输出的最佳 sed 或 awk 命令是什么?

【问题讨论】:

  • 一个 sed 命令可能不足以将所有这些字段添加到您的 CSV。

标签: csv sed awk


【解决方案1】:

这是一系列基于此处示例的sed 命令:

s/31,/31,NULL,/;
s/,01/NULL,NULL,01/;
s/.$/,Tom/

至于awk,或许你可以先插入字段,然后再更新:

BEGIN { FS="," }
{ print $1","$2",NULL,"$3",NULL,NULL,"$4","$5",Tom" }

【讨论】:

    【解决方案2】:
    $ awk '{print $1,F,$2,F,F,$3,$4,$5,"Tom"}' FS=, OFS=, F='NULL' file
    40,NULL,2012-05-30,NULL,NULL,London,61,Sunny,Tom
    41,NULL,2012-02-22,NULL,NULL,Moscow,11,Snow,Tom
    54,NULL,2012-04-10,NULL,NULL,Tokyo,02,Sunny,Tom
    

    【讨论】:

      【解决方案3】:

      如果您只是添加显示的字段,那么这样的事情就可以了:

      $ awk 'BEGIN{FS=OFS=","} {$3="NULL,"$3",NULL,NULL"; $0=$0",Tom"} 1' file
      40,2012-05-30,NULL,London,NULL,NULL,61,Sunny,Tom
      41,2012-02-22,NULL,Moscow,NULL,NULL,11,Snow,Tom
      54,2012-04-10,NULL,Tokyo,NULL,NULL,02,Sunny,Tom
      

      但如果你做的不止这些,那么可能有一个更好的解决方案来解决这个问题,包括移动字段并循环使用“NULL”填充空字段的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多