在POSIX的指定的命令行工具uniq
被设计为“报告或滤出在一个文件中的重复行”。除了涉及完整行进行比较的用例外,部分行比较还有两种选择:
-f <number>
忽略第一个<number>
字段,以及-s <number>
忽略第一个<number>
字符(从 中的任何忽略字段开始-f
)。我不明白的是为什么从未添加该功能uniq
以允许忽略除第一个 <number>
字段之外的所有字段。
一个常见的 awk 习语是:
awk '!a[$1]++'
Run Code Online (Sandbox Code Playgroud)
它只打印包含第一次出现的第一个字段的行。
在我看来,这与uniq
.
当然,工具重叠是可以的,但是是否有任何基于历史或 UNIX 哲学的理由不包括与 的并行功能-f
,只考虑第一个 ____ 字段?
我不知道历史或基于 UNIX 哲学的原因(如果有的话),但几年前有人在coreutils
错误列表上提交了一个功能请求(和补丁),以将该功能添加到uniq
. 最终被拒绝: