不使用printf的奇特awk输出
这只是出于好奇 我有这样一个以制表符分隔的文件不使用printf的奇特awk输出,awk,gawk,nawk,Awk,Gawk,Nawk,这只是出于好奇 我有这样一个以制表符分隔的文件 jklh banana hk hkl klh jklh h hk banana h hk kljh asdf banana lk sdfa jklæ jklæ banana sdf jklæ 通过这样做,我替换了第一列中的“banana”,输出保持不变: awk '{gsub(/banana/,0,$1)}; {printf "%s\t%s\t%s\n", $1, $2, $3}' file > o
jklh banana hk
hkl klh jklh
h hk banana
h hk kljh
asdf banana lk
sdfa jklæ jklæ
banana sdf jklæ
通过这样做,我替换了第一列中的“banana”,输出保持不变:
awk '{gsub(/banana/,0,$1)}; {printf "%s\t%s\t%s\n", $1, $2, $3}' file > outfile
另一方面,在我将单词banana替换为0的行中,它将制表符替换为空格:
awk '{gsub(/banana/,0,$1)}; {print}' file > outfile
如何使用OFS
OFS
或类似工具打印替换行而不替换制表符。我一直在到处玩,没有任何进展。请记住:无printf
将OFS
设置为选项卡:
awk -v OFS="\t" '{gsub(/banana/,0,$1)}; {print}'
@AWE:备选方案:您可以在不使用
-v
的情况下使用它,方法是将它放在末尾:awk'{…}'OFS=“\t”inputfile
或BEGIN
块中:awk'BEGIN{OFS=“\t”}{…}inputfile。我现在明白了,我常常很亲近。