如何为awk命令的输出添加逗号作为分隔符?
问题分析与解决
你的awk命令存在两个关键错误,导致无法输出预期的逗号分隔格式:
- FS/OFS设置语法错误:
BEGIN{FS=OFS="",""}是无效写法,正确的应该是直接将分隔符设为逗号,即FS=OFS=","。 - 字段拼接方式错误:直接写
print $1 $2会把两个字段强制拼接成一个字符串,不会触发OFS(输出字段分隔符)的作用。需要用逗号分隔$1和$2,让awk自动用OFS连接两个字段。
正确命令
执行以下命令即可得到你期望的输出:
awk -F, 'BEGIN{FS=OFS=","} {print $1, $2}' file.csv
运行后输出结果:
col1,col2 col1,col2 col1,col2 col1, col1,col2
另一种等价写法
如果不想依赖OFS,也可以手动拼接逗号和字段,效果相同:
awk -F, '{print $1 "," ($2 ? $2 : "")}' file.csv
这个写法的逻辑是:直接输出$1加逗号,然后判断$2是否存在,存在则输出$2,否则输出空字符串,确保第四行末尾保留逗号。
内容的提问来源于stack exchange,提问作者HattrickNZ
相关产品推荐
相关产品推荐

