AWKのみを使用する場合は、単語が20文字を超える場合にのみ単語の発生回数を計算する必要があります。単語の頻度を計算する方法を見つけましたが、このパラメータの設定にはいくつかの問題があります。
次に、定義したい同義語からこれらの単語を分離しますが、1つの単語はスキップしたいと思います。
私の言葉は、「hello」が30回現れたら、、...がまだ「hello」であるのではなく、などを「hi」に2nd
変え4th
たいということです。6th
1st
3rd
これが私がしたことです:
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を設定することですflag
。0
awk
ファイルの繰り返しhello
で入力文字列を確認し、見つかった場合はを確認してhello
に変更しません。flag
flag
0
hello
hi
flag
次に(0=>1, 1=>0)の値を切り替えます.
次hello
の場合にflag
値があり、1
toが上書きされます。hello
hi