[英]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.