1

これは好奇心のためだけです。

このようなタブ区切りファイルがあります

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に置き換えた行のタブをスペースに置き換えます。

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

OFSタブを交換せずに、交換した行を印刷するにはどうすればよいですか。私は進歩することなくたくさん遊んできました。覚えておいてください:いいえprintf

4

1 に答える 1

2

Set OFS to a tab:

awk -v OFS="\t" '{gsub(/banana/,0,$1)}; {print}'
于 2012-05-14T12:02:59.643 に答える