如果我这样运行:
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
为什么sort -u会返回预排序数据的第一行而不是这种情况下排序后数据的第一行?
BTW我可以通过排序(不带-u)来获得所需的行为:
printf "Will be second line post-sort\nWill be first line post-sort" \
| sort -k1,1 | sort -k1,1 -u
答案 0 :(得分:3)
我认为你不能确切地依赖输出中的哪一行。 POSIX说:
-u
唯一:在每组线中具有相同键的除了一个之外的所有线。
它没有说明哪个行具有相同的键将在输出中,只是它们只有一个。因此,如果您需要特定的工具,则应使用其他工具,例如awk