繁体   English   中英

使用awk解析数据

[英]Parsing data using awk

我已将3列数据复制到一个用逗号(,)分隔的文件中,并进行了一些字符串操作,但不知道为什么为每行添加空''

我的输入文件-

"['3.FIT-DYN', '3.MYFIT-LTR-DYN']",FIT-L-PHY-PRM-GI,2014-07-11 14:07:28+0000
 ['1.839324'],4.FIDCWRRTL,2015-04-16 12:04:21+0000
              ,4.AIQM,2015-04-16 12:04:21+0000

如果您只看到第3行的第一位数据为空。

我的awk-

     BEGIN { FS=",?\"?[][]\"?,?"; OFS="," }
     {
       if (split($2,a,/\047/)) {
          for (j=2; j in a; j+=2) {
           $2 = a[j]
           prt()
      }
     }
     else {
    prt()
      }
     }


    function prt(   out) {
      out = "\047" $0 "\047"
      gsub(OFS,"\047,\047",out)
      print out
     }

o / p-

  '','3.FIT-DYN','FIT-L-PHY-PRM-GI','2014-07-11 14:07:28+0000'
  '','3.MYFIT-LTR-DYN','FIT-L-PHY-PRM-GI','2014-07-11 14:07:28+0000'
  '','1.839324','4.FIDCWRRTL','2015-04-16 12:04:21+0000'
  '','4.AIQM','2015-04-16 12:04:21+0000'

预期o / p-

    '3.FIT-DYN','FIT-L-PHY-PRM-GI','2014-07-11 14:07:28+0000'
    '3.MYFIT-LTR-DYN','FIT-L-PHY-PRM-GI','2014-07-11 14:07:28+0000'
    '1.839324','4.FIDCWRRTL','2015-04-16 12:04:21+0000'
    '','4.AIQM','2015-04-16 12:04:21+0000'

您正在使用方括号作为字段分隔符。 在您的数据中,第一个字符是方括号,即字段分隔符。 这意味着您的第一个字段是第一个字段分隔符之前的所有内容,在这种情况下为空字符串。

我建议别的东西:

BEGIN { FS="]\"?,"; OFS="," }
NF == 1 { sub("^[[:blank:]]*", "''"); print; next }
{
    sub(" *\"?\\[", "", $1);
    count = split($1, fields, ", *");
    for (i = 1; i <= count; i++) {
        $1 = fields[i]
        print
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM