为什么没有uniq的这个大文件的工作? 庆典(Why isn't uniq workin

2019-06-26 20:44发布

我对这个其他noob问题真的很抱歉,但我真的不能找出这里发生了什么。 我想从一个文件,其中的话是一个由线计算的话的频率。 该文件是非常大的,所以这可能是问题(它计算30万线在这个例子中)

我做这个命令:

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编程菜鸟。 我究竟做错了什么?

非常感谢

Answer 1:

首先尝试进行排序:

cat .temp_occ | sort| uniq -c | sort -k1,1nr -k2 > distribution.txt


Answer 2:

或者使用“排序-u”,这也消除重复。 见这里 。



Answer 3:

该文件的大小无关,与你所看到的。 从uniq的的手册页(1) :

注:“uniq的”不检测重复行,除非它们是相邻的。 你可能想先排序的输入,或者使用“排序-u”不“uniq的”。 此外,比较尊敬的“LC_COLLATE'.`指定的规则

因此,运行uniq

a
b
a

将返回:

a
b
a


Answer 4:

有没有可能是某些词有在他们之后的空白字符? 如果是这样,你应该使用这样的删除:

cat .temp_occ | tr -d ' ' | uniq -c | sort -k1,1nr -k2 > distribution.txt


文章来源: Why isn't uniq working on this big file? bash