我真的很抱歉这个其他的菜鸟问题,但我无法弄清楚这里发生了什么。我想计算文件中单词的频率,其中单词是逐行的。该文件非常大,所以这可能是问题(在这个例子中它计算了300k行)
我执行此命令:
cat .temp_occ | uniq -c | sort -k1,1nr -k2 > distribution.txt
问题是它给了我一个小小的错误:它认为我的语言不同。 例如,第一个条目是:
306 continua
278 apertura
211 eventi
189 murah
182 giochi
167 giochi
与giochi重复两次,你可以看到
在文件的底部变得更糟,它看起来像这样:
1 win
1 win
1 win
1 win
1 win
1 win
1 win
1 win
1 win
1 winchester
1 wind
1 wind
所有单词
对于这个愚蠢的问题,我真的很抱歉,但我对shell编程很有帮助。 我做错了什么?
非常感谢
答案 0 :(得分:13)
首先尝试排序:
cat .temp_occ | sort| uniq -c | sort -k1,1nr -k2 > distribution.txt
答案 1 :(得分:6)
或使用“sort -u”也可以消除重复。请参阅here。
答案 2 :(得分:2)
文件的大小与您所看到的无关。 From the man page of uniq(1):
注意:'uniq'不会检测重复的行,除非它们相邻。 您可能希望先对输入进行排序,或者不使用“sort -u” 'uniq的'。此外,比较遵守'LC_COLLATE'指定的规则。
在
上运行uniq
a
b
a
将返回:
a
b
a
答案 3 :(得分:1)
是否有可能某些单词后面有空格字符?如果是这样,你应该使用以下内容删除它们:
cat .temp_occ | tr -d ' ' | uniq -c | sort -k1,1nr -k2 > distribution.txt