不使用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。我现在明白了,我常常很亲近。