1

私はファイルを持っています:

one one one
one one
one one
one
one
one

このコマンドは、「one」、「three」を 5 回置き換えました。

$ awk '{for(i=1; NF>=i; i++)if($i~/one/)a++}{if(a<=5) gsub("one", "three"); print }' file

three three three
three three
one one
one
one
one

同じことですが、6回:

$ awk '{for(i=1; NF>=i; i++)if($i~/one/)a++}{if(a<=6) gsub("one", "three"); print }' file

three three three
three three
one one
one
one
one

上記の例を改善するにはどうすればよいですか? この結果が欲しい:

three three three
three three
three one
one
one
one

ご協力ありがとうございました。

4

1 に答える 1

3
awk '{for (i=1; i<=NF; i++) {if ($i ~ /one/) {a++; if(a <= 6) sub("one", "three", $i)}}; print}'
于 2012-05-27T15:22:27.227 に答える