调用uniq并在shell中以不同的顺序排序

时间:2009-09-09 21:34:31

标签: optimization shell performance sorting uniq

在shell脚本中调用它们时uniq和sort的顺序有区别吗?我在这里谈论时间和空间。

grep 'somePattern' | uniq | sort

VS

grep 'somePattern' | sort | uniq

对140 k行文本文件进行快速测试显示第一种方法略有提速(5.5 s vs 5.0 s)(获取uniq值然后排序)

我不知道如何衡量内存使用情况

现在的问题是:订单会有所作为吗?或者它是否依赖于返回的greplines(许多/几个重复)

我期待着你的回答

3 个答案:

答案 0 :(得分:9)

我相信sort -u适合这种情况,并且会对事物进行排序和统一。显然,这比以任何顺序单独调用sortuniq更有效。

答案 1 :(得分:8)

唯一的正确的顺序是在uniq之后调用sort,因为uniq的手册页说:

  

丢弃INPUT(或标准输入)中连续相同的一行,写入OUTPUT(或标准输出)。

因此它应该是

grep 'somePattern' | sort | uniq

答案 2 :(得分:2)

uniq取决于被排序的项目以删除重复项(因为它比较了前一项和当前项),因此为什么排序总是在uniq之前运行。试试吧,看看。