在Unix shell中的行转换

时间:2013-08-12 11:01:56

标签: unix

我有一个输入;

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

请有人帮忙吗?

1 个答案:

答案 0 :(得分:0)

这可以做到:

$ 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="\""