単語の頻度を計算する方法> 20

単語の頻度を計算する方法> 20

AWKのみを使用する場合は、単語が20文字を超える場合にのみ単語の発生回数を計算する必要があります。単語の頻度を計算する方法を見つけましたが、このパラメータの設定にはいくつかの問題があります。

次に、定義したい同義語からこれらの単語を分離しますが、1つの単語はスキップしたいと思います。

私の言葉は、「hello」が30回現れたら、、...がまだ「hello」であるのではなく、などを「hi」に2nd変え4thたいということです。6th1st3rd

これが私がしたことです:

BEGIN { FS="[^a-zA-Z]+" } {
     for (i=1; i<=NF; i++) {
         word = tolower($i)
         words[word]++
     }
 }
 END {
     for (w in words)
          printf("%3d %s\n", words[w], w)
 } 

答え1

はい、意味は:

BEGIN { flag=0; FS="[^a-zA-Z]+" } {
     for (i=1; i<=NF; i++) {
         word = tolower($i)
         if ($0 ~ /hello/ ) {
             if (flag) {
                 sub ("hello", "hi", word );
             }
            flag= !flag
         }
         words[word]++
     }
 }
END {
        for (w in words)
           printf("%3d %s\n", words[w], w)
    }

上記の機能は、プログラムが初期化されたときにaを設定することですflag0awk

ファイルの繰り返しhelloで入力文字列を確認し、見つかった場合はを確認してhelloに変更しません。flagflag0hellohi

flag次に(0=>1, 1=>0)の値を切り替えます.

helloの場合にflag値があり、1toが上書きされます。hellohi

関連情報