以下命令之间有什么区别?

sort -u FILE

sort FILE | uniq

推荐答案

使用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指定,并且该操作是安全的(在覆盖输出之前读取文件).

Linux相关问答推荐

列出Linux上特定目录和子目录名称的bash命令

x64 NASM 汇编程序在程序开始时显示分段错误

如何在Linux下使用正则表达式更改文件名

删除 csv 列中的不匹配值

x86_64 Linux 程序集中的逻辑与实现

编译过度对齐的动态分配变量时出现 icpc 错误

判断指定名称的画面是否存在

MessageBox 的 GTK 实现

查看 linux 上的多核或多 CPU 利用率

哪个程序在给定任何文件的情况下创建一个 C 数组?

为什么 XGrabKey 会生成额外的聚焦和聚焦事件?

yum 可以告诉我哪些存储库提供了特定的包吗?

为 django 项目安装 memcached

从命令行导入 PostgreSQL CSV

vscode 总是请求保存权限

crt1.o:在函数_start中:-Linux 中未定义对main的引用

如何从 Linux 内核模块的 init_module 代码创建设备 node ?

我可以使用 awk 将所有小写字母转换为大写吗?

在 reverse-i-search (Ctrl+R ) , 历史上类似命令之间切换的任何方法

计算每个进程打开的文件