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