在Bash中获取文件中出现频次最高的短语(非单词)
解决按行统计短语出现次数的问题
问题原因
你之前使用的tr -c '[:alnum:]' '[\n*]'命令会把所有非字母数字字符(包括空格)替换成换行,导致原本作为完整短语的a a被拆成两个单独的a,从而出现错误的统计结果。
正确命令
要统计每行(即每个完整短语)的出现次数,直接按行处理即可:
sort a.txt | uniq -c | sort -nr
执行结果
运行上述命令后,会得到你期望的输出:
2 a 1 b 1 aa 1 a a
命令说明
sort a.txt:将文件内容按行排序,让相同短语集中排列uniq -c:统计连续重复行的出现次数,在每行前添加次数前缀sort -nr:按次数从高到低排序(n表示按数值排序,r表示反向排序)
内容的提问来源于stack exchange,提问作者Amit Singh
相关产品推荐
相关产品推荐

