3

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

grep 'somePattern' | uniq | sort

对比

grep 'somePattern' | sort | uniq

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

不过我不知道如何测量内存使用量……</p>

现在的问题是:顺序有影响吗?或者它是否依赖于 grep 的返回行(很多/很少重复)

4

3 回答 3

10

我相信这sort -u适合这种确切的场景,并且可以对事物进行分类和唯一化。显然,这将比以任一顺序单独调用sort和单独调用更有效。uniq

于 2009-09-09T21:37:45.047 回答
9

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

丢弃来自 INPUT(或标准输入)的所有连续相同行,但写入 OUTPUT(或标准输出)。

因此应该是

grep 'somePattern' | sort | uniq
于 2009-09-09T21:38:14.657 回答
3

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

于 2009-09-09T21:39:19.320 回答