0

Unix を使用して awk スクリプトを作成する必要があります。スクリプトの最初の部分では、テキスト ファイル内で "Ant" "Ass" および "Ape" という単語を検索し、大文字の同じ単語に置き換えます。

各出現箇所を見つけるために gsub を使用しますか? 私が行った場合:

{gsub(/Ass/, "ASS"); print}
{gsub(/Ape/, "APE"); print}
{gsub(/Ant/, 'ANT"); print} 

ファイルのすべての行を 3 回または 4 回印刷するだけです...これらの 3 つの単語を検索して置換し、変更された行のみを印刷するにはどうすればよいですか?


プログラムの 2 番目の部分は、Ass、Ape、または Ant に一致する行の数と、行われた置換の数を追跡することです。

ご協力いただきありがとうございます!

4

3 に答える 3

0

別の方法:

awk  '
  BEGIN {IGNORECASE=1}
  { 
      s = 0
      while (match(substr($0, s),/ass|ape|ant/) > 0) {
          c=substr($0,s + RSTART - 1,RLENGTH)
          sub(c,toupper(c))
          s += RSTART + RLENGTH
      }
     print
   }' input
于 2013-04-30T01:03:39.793 に答える
0

単一の句ですべての置換を行います。

{subs += gsub(/Ass/, "ASS"); subs += gsub(/Ape/, "APE"); subs += gsub(/Ant/, "ANT"); print; }
END { print "Total substitutions:", subs; }
于 2013-04-30T00:26:12.387 に答える