如何使用awk查找文本中出现频率最高的连续两个单词组合
如何使用awk查找文本中出现频率最高的连续两个单词组合
我们以下面这段文本为例开展操作:
Reservoir 1992 reviewed by Reservoir Har even RESERVOIR DOGS
步骤1:拆分所有单词到单独一列
首先使用tr命令把文本中的标点、空格统一替换为换行符,实现每个单词单独占一行:
tr -s '[[:punct:][:space:]]' '\n'
执行后输出效果如下:
Reservoir 1992 reviewed by Reservoir Har even RESERVOIR DOGS
步骤2:用awk拼接连续两个单词
使用下面的awk命令,把相邻的两行内容拼接成一行,即可得到所有连续两个单词的组合:
awk 'NR == 1 { prev = $0; next } { print prev, $0; prev = $0 }'
默认输出效果如下:
Reservoir 1992 1992 reviewed reviewed by by Michael Reservoir Har Ha even even RESERVOIR RESERVOIR DOGS
如果需要对齐输出,可以把命令中的print替换为printf做格式化,输出效果如下:
Reservoir 1992 1992 reviewed reviewed by by Michael Reservoir Har Har even even RESERVOIR RESERVOIR DOGS
步骤3:统计组合出现频率
把上一步的输出依次通过管道传给sort、uniq -c、sort -nr命令,就能统计出每个组合的出现次数,并且按照次数从高到低排序,最终得到频率最高的连续单词组合。
内容的提问来源于stack exchange,提问作者DOS HASAN
相关产品推荐
相关产品推荐

