我仍然是awk的新手,但我有一个awk命令可以执行我想做的90%。我分裂的那条线看起来像这样。
Key1^C{"s":"VALUE"}^BKEY2^C{"s":"VALUE"}^BKEY3^C{"s":"VALUE"}
我正在用这个awk命令分裂它
awk -F'\02' '{for(x=1; x<=NF; x++) {nf=split($x,f,"\03"); print f[1], "--", f[2], ","}}' inputfile > outputfile.txt
看起来像这样
Key1 -- Value,
Key2 -- Value,
Key3 -- Value,
我希望有人可以帮我指明如果有可能让它看起来像这样
Key1 -- Value, Key2 -- Value, Key3 -- Value
答案 0 :(得分:2)
试试这个:(根据你的命令):
awk -F'\02' '{for(x=1; x<=NF; x++) {nf=split($x,f,"\03"); printf "%s",f[1]" -- " f[2] (x==NF?"": ",")}print ""}' inputfile > outputfile.txt
答案 1 :(得分:0)
试试这个:
awk -F'\02' '{for(x=1; x<=NF; x++) {nf=split($x,f,"\03"); tmpvar=tmpvar" "f[1], "--", f[2], ","}}END{sub(/,$/,"",tmpvar); print tmpvar}' inputfile > outputfile.txt
答案 2 :(得分:0)
awk -F'[\02\03"]' '{sep="";for(i=1;i<NF;i+=6){printf "%s%s -- %s",sep,$i,$(i+4);sep=", "}}END{print ""}' some.file
或更具可读性:
awk -F'[\02\03"]' '
{
sep = ""
for (i=1; i<NF; i+=6) {
printf "%s%s -- %s", sep, $i, $(i+4)
sep = ", "
}
}
END {print ""}
' some.file
这使用^ B和^ C以及“作为字段分隔符。我假设^ C之后的JSON片段始终同时具有键和值。