2012-05-14 50 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