私はそれぞれ本の1枚を含む10のテキストファイルを持っており、1行で最も頻繁に表示される単語のペアを探したいと思います。つまり、
第1章:
hello world good boy green sun
good green boy sun world hello
第2章:
第3章:
.....など
1枚の希望の出力:
hello world (alphabet order)
答え1
awk '
{
$0 = tolower($0)
for (i = 1; i < NF; i++) {
pair = $i"" < $(i+1) ? $i" "$(i+1) : $(i+1)" "$i
c = ++count[pair]
if (c > max) max = c
}
}
END {
for (pair in count)
if (count[pair] == max)
print pair
}'
答え2
この試み、
awk
各単語のペアを印刷します。perl
単語ペアの単語を並べ替えるために使用されます(渡す)。sort
sum を使用してuniq -c
各ペアの発生回数を計算します。
awk '{for (i=1;i<NF;i++) { print tolower($i)" "tolower($(i+1)) }}' file \
| perl -ane '$,=" "; print sort @F; print "\n";' \
| sort | uniq -c | sort -b -k1nr -k2
出力:
2 boy green
2 hello world
1 boy good
1 boy sun
1 good green
1 good world
1 green sun
1 sun world