DATA という単語が 10000 回以上出現する大きなテキスト ファイルがあります。条件付き置換を行う方法を知りたいので、ドキュメントに最初に表示されたときに NO1 に変更され、2 回目は NO2 に変更され、bash を使用します。bash を使った複雑なスクリプトを考えていましたが、もっと簡単な方法があるはずです。
質問する
602 次
2 に答える
5
perl -pe 's/DATA/ "NO" . ++$n /ge' file_in > file_out
于 2012-05-17T19:08:49.217 に答える
1
awk '{
for (i=1;i<=NF;i++) {
if ($i == "DATA") printf("%s%s", "NO"++n, OFS);
else printf("%s%s", $i, OFS)
if (i==NF) printf "\n"
}
}' file > outFile
または、グレン・ジャックマンが正しく指摘しているように、これは次のように要約できます。
awk '{for (i=1; i<=NF; i++) if ($i=="DATA") $i = "NO" ++n} {print}' file > outFile
元のバージョンを残して、代わりの (ただしやり過ぎた) アプローチを示します ;-)
これが役立つことを願っています。
于 2012-05-17T18:32:28.150 に答える