【问题标题】:How to convert a file with data in key = value format to a csv file in unix shell scripting?如何将具有 key = value 格式数据的文件转换为 unix shell 脚本中的 csv 文件?
【发布时间】:2014-11-25 09:58:50
【问题描述】:

我有一个格式的输入文件:

(key1=value1,key2=value2,key3=value3)
(key1=value4,key2=value5,key3=value6)

我想将此文件转换为 csv 文件,例如:

key1,key2,key3
value1,value2,value3
value4,value5,value6

如何在 shell 脚本中做到这一点?

【问题讨论】:

    标签: shell unix csv


    【解决方案1】:

    你可以使用这个awk来处理这个文件:

    awk -F'[=(),]' -v OFS=, 'NR==1{for (i=2; i<NF; i+=2) printf "%s%s", $i, (i<NF-2)?OFS:ORS}
                  {for (i=3; i<=NF; i+=2) printf "%s%s", $i, (i<NF-2)?OFS:ORS}' input
    key1,key2,key3
    value1,value2,value3
    value4,value5,value6
    

    说明:

    • -F'[=(),]' - 将字段分隔符设为字符类中的这些字符之一:[=(),]
    • -v OFS=, - 将输出字段分隔符设为逗号
    • NR==1 - 仅对第一条记录执行此块
    • 'NR==1{...} 将通过打印字段 2、4、6... 来打印输入文件的所有标题
    • {for (i=3; i&lt;=NF; i+=2) ...} 将通过打印字段 3、5、7... 来打印所有单元格...

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 2017-06-24
      • 2016-12-22
      • 1970-01-01
      • 2012-12-31
      • 2021-12-28
      • 2020-12-08
      • 1970-01-01
      • 2019-06-20
      相关资源
      最近更新 更多