大家
我使用逗号作为字段分隔符将一行传递给awk。我仍然希望使用逗号作为分隔符来生成输出。但是,awk将逗号更改为空格。
echo "qwer,asdf,zxcv" | awk -F',' '{gsub("a","b",$2); print $0}'
qwer bsdf zxcv
有没有办法让awk尊重原始输入的分隔符?
答案 0 :(得分:3)
您可以使用awk
echo "qwer,asdf,zxcv" | awk -F, '{gsub("a","b",$2); print $0}' OFS=,
qwer,bsdf,zxcv
答案 1 :(得分:2)
定义OFS
,即输出字段分隔符:
$ echo "qwer,asdf,zxcv" | awk -F',' 'BEGIN{OFS=","}{gsub("a","b",$2); print $0}'
qwer,bsdf,zxcv
另请注意,{print $0}
可以跳过,-F
块中也包含BEGIN{}
:
$ echo "qwer,asdf,zxcv" | awk 'BEGIN{FS=OFS=","}{gsub("a","b",$2)} 1'
qwer,bsdf,zxcv
给1
我们提供一个真实条件,默认情况下评估为{print $0}
。