2012-05-14 51 views
1

这只是为了好奇。不使用printf的花式awk输出

我有一个制表符分隔的文件中像这样

jklh banana hk 
hkl klh jklh 
h hk banana 
h hk kljh 
asdf banana lk 
sdfa jklæ jklæ 
banana sdf jklæ 

通过这样做,我在第一列取代“香蕉”和输出保持否则相同:

awk '{gsub(/banana/,0,$1)}; {printf "%s\t%s\t%s\n", $1, $2, $3}' file > outfile 

这在其他用手中的空格代替标签,我用0替换单词banana:

awk '{gsub(/banana/,0,$1)}; {print}' file > outfile 

怎么样ca n我使用OFS或类似的东西来打印出替换的行而不需要替换标签。我一直在玩很多没有进步。记住:printf

回答

2

设置OFS的标签:

awk -v OFS="\t" '{gsub(/banana/,0,$1)}; {print}' 
+0

我错过了“-v” – AWE

+2

@AWE:替代品:您可以通过将其在最后使用它没有了'-v' :'awk'{...}'OFS =“\ t”inputfile'或者在BEGIN块中:awk BEGIN {OFS =“\ t”} {...}'inputfile' –

+0

不知何故,我没有当我尝试时,没有绊倒任何正确的选择。我现在看到我经常靠近。 – AWE