我有一个档案
A|B|C|D|E|F
我需要像这样的输出
"A","B","C","D","E","F"
我做了:
awk -f'|' '{print $1,$2,$3}'
这给我的输出只是空格。我的问题是如何用引号将逗号分隔的输出以及如何在不键入的情况下一次打印所有值'{print $1,$2,$3......}'
我可以:
awk -f'|' '{print """"$1""""","""""$2""""","""""$3""""..}'
但这是行不通的。
要指定字段分隔符,你必须使用-F
代替-f
;要更改输出的字段分隔符,你必须更改OFS
变量(输出字段分隔符)。
在你的字段周围获取报价,你可以遍历所有字段并添加它们:
$ awk -F"|" -v OFS="," '{for (i=1; i<=NF; ++i){$i="\""$i"\""}}1' infile
"A","B","C","D","E","F"
或者,使用sed:
$ sed 's/\([^|]*\)/"\1"/g;y/|/,/' infile
"A","B","C","D","E","F"
这用引号将所有非管道字符序列括起来,然后用逗号替换所有管道。
非常感谢您的快速回答。效果很好。小写的-f在我这边是错别字:-)