为什么 uniq 可以忽略前导字符而不是结束字符?

Wil*_*ard 7 awk history uniq

POSIX的指定的命令行工具uniq被设计为“报告或滤出在一个文件中的重复行”。除了涉及完整行进行比较的用例外,部分行比较还有两种选择:

  • -f <number>忽略第一个<number>字段,以及
  • -s <number>忽略第一个<number>字符(从 中的任何忽略字段开始-f)。

我不明白的是为什么从未添加该功能uniq以允许忽略除第一个 <number>字段之外的所有字段。

一个常见的 awk 习语是:

awk '!a[$1]++'
Run Code Online (Sandbox Code Playgroud)

它只打印包含第一次出现的第一个字段的行。

在我看来,这与uniq.

当然,工具重叠是可以的,但是是否有任何基于历史或 UNIX 哲学的理由不包括与 的并行功能-f考虑第一个 ____ 字段?

don*_*sti 4

我不知道历史或基于 UNIX 哲学的原因(如果有的话),但几年前有人在coreutils错误列表上提交了一个功能请求(和补丁),以将该功能添加到uniq. 最终被拒绝:

rev | uniq -f | rev被认为足够