我有 10 个文本文件,每个文件中都有一本书的一章,我想找到在一行中最常出现的一对单词,即:
第1章:
hello world good boy green sun
good green boy sun world hello
第2章:
第3章:
.....ETC
第一章所需的输出:
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
和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