如果我这么做的话:
printf "Will be second line post-sort\nWill be first line post-sort" \
| sort -k1,1
我得到输出:
Will be first line post-sort
Will be second line post-sort
正如预期的那样(关键字段相同,但排序使用最后的比较)。但是,如果我添加-u选项:
printf "Will be second line post-sort\nWill be first line post-sort" \
| sort -k1,1 -u
我得到的是:
Will be second line post-sort
而不是预期的:
Will be first line post-sort
在这种情况下,排序-u为什么返回预排序数据的第一行而不是排序后数据的第一行?
顺便说一句,我可以首先通过排序(没有-u)来获得所需的行为:
printf "Will be second line post-sort\nWill be first line post-sort" \
| sort -k1,1 | sort -k1,1 -u
发布于 2016-11-23 16:52:33
我认为你不能精确地依赖于输出中的哪一行。POSIX说:
-u
Unique:在每组具有相同键的行中,除一行外,其他所有行都被抑制。
它并不是说有相同键的行中哪一行将在输出中,只是说只有其中一行。因此,如果您想要一个特定的工具,您应该使用其他一些工具,比如awk
。
https://stackoverflow.com/questions/40776245
复制