【问题标题】:Columns to Rows Conversion in Unix shellUnix shell 中的列到行转换
【发布时间】:2013-08-12 19:25:01
【问题描述】:

我有意见;

8765843279  "dma_code":"501","dma_region";"NEW YORK, NY","check_fpc_cookie":"-1","check_tpc_cookie":"1"

我希望输出为;

8765843279       dma_code                 501
8765843279        dma_region               NEW YORK, NY
8765843279        check_fpc_cookie          -1
8765843279        check_tpc_cookie            1

有人可以帮忙吗?

【问题讨论】:

    标签: unix


    【解决方案1】:

    这样就可以了:

    $ awk -v RS="," -F"\"" 'NR==1{v=$1}{print v, $2, $4}' file
    8765843279   dma_code 501
    8765843279   dma_region NEW YORK NY
    8765843279   check_fpc_cookie -1
    8765843279   check_tpc_cookie 1
    

    说明

    它基于this solution by Ed Morton

    • RS="," => 记录用逗号分隔。
    • -F"\"" => 记录中的字段由引号 " 分隔。
    • NR==1 {v=$1} 存储第一条记录的值。
    • '{print v, $2, $4}' 打印值 + 第 2 个字段 + 第 4 个字段。第 2 位和第 4 位基于使用字段分隔符剪切字段,即设置为 F="\""

    【讨论】:

      猜你喜欢
      • 2017-01-30
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      相关资源
      最近更新 更多