3

DATA という単語が 10000 回以上出現する大きなテキスト ファイルがあります。条件付き置換を行う方法を知りたいので、ドキュメントに最初に表示されたときに NO1 に変更され、2 回目は NO2 に変更され、bash を使用します。bash を使った複雑なスクリプトを考えていましたが、もっと簡単な方法があるはずです。

4

2 に答える 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 に答える