使用sort -u
的I/O比使用sort | uniq
的少,但最终结果是相同的.特别是,如果文件足够大,sort
必须创建中间文件,那么sort -u
很可能会使用稍微少一些或稍微小一些的中间文件,因为它可以在对每个集合进行排序时消除重复文件.如果数据高度重复,这可能是有益的;如果事实上几乎没有复制品,那就不会有太大的区别(与管道的一阶效果相比,肯定是二阶性能效果).
请注意,有时管道是合适的.例如:
sort FILE | uniq -c | sort -n
这会按照文件中每行出现的次数对文件进行排序,重复次数最多的行出现在最后.(我发现这种组合(这是Unix或POSIX的惯用用法)可以与GNU sort一起压缩成一个复杂的"sort"命令,这并不奇怪.)
有时不使用管道很重要.例如:
sort -u -o FILE FILE
这会对文件进行"就地"排序;也就是说,输出文件由-o FILE
指定,并且该操作是安全的(在覆盖输出之前读取文件).