我在这里有这个命令,我在实现良好的格式时遇到了问题。
在这一行中,
DATE*2014*09*23
VAL*0001*ABC
N3*Sample
VAL*0002*XYZ
我想要的输出是这样的:
["ABC", "XYC"]
我试过这段代码:
perl -nle 'print $& if /VAL\*[0-9]*\*\K.*/' file | awk '{ printf "\"%s\",", $0 }'
仅产生:
"ABC","XYZ",
另一件事是当只打印一个值时。
如果发生文件是这样的:
DATE*2014*09*23
VAL*0001*ABC
N3*Sample
我想要的输出只是这样(忽略了[]的输出:
"ABC"
答案 0 :(得分:0)
你可以用awk完成所有事情:
#!/usr/bin/awk -f
BEGIN {FS="*"; i=0; ORS=""}
$1=="VAL" {a[i++]=$3}
END {
if (i>1) {
print "[\"" a[0]
for (j = 1; j < i; j++)
print "\",\"" a[j]
print "\"]"
}
if (i==1)
print "\"" a[0] "\""
}