如何用Linux命令统计文档不同单词?uniq命令结果异常求助
问题:uniq统计重复单词计数不符合预期
数据集
Meredith Norris Thomas;Regular Air;HomeOffice Kara Pace;Regular Air;HomeOffice Ryan Foster;Regular Air;HomeOffice
执行命令
cat HomeOffice_sales.txt |tr " " "\n" | tr ";" "\n"| uniq -c
异常结果
1 Meredith 1 Norris 1 Thomas 1 Regular 1 Air 1 HomeOffice 1 Kara 1 Pace 1 Regular 1 Air 1 HomeOffice 1 Ryan 1 Foster 1 Regular 1 Air 1 HomeOffice
问题原因
uniq的特性是只对连续重复的行进行计数合并,你的处理后相同单词(比如Regular、Air、HomeOffice)分散在不同行之间,没有连续出现,所以每个都会被单独计数为1。
解决办法
先通过sort命令把相同单词排序到一起,再用uniq -c统计:
cat HomeOffice_sales.txt | tr " ;" "\n" | sort | uniq -c
这里把两个tr命令合并,tr " ;" "\n"表示把空格和分号都替换成换行符,写法更简洁。
预期结果
3 Air 3 HomeOffice 1 Foster 1 Kara 1 Meredith 1 Norris 1 Pace 3 Regular 1 Ryan 1 Thomas
内容的提问来源于stack exchange,提问作者Faisal
相关产品推荐
相关产品推荐

