sort
的选项的手册页-u
显示:
使用
-c
,检查严格排序; without-c
,仅输出相等运行的第一个
有人可以帮我将其翻译成基本英语吗?该-uc
选项为我提供了与 only 相同的输出-c
。
答案1
严格排序意味着任何值都不能重复。比较输出
printf "%s\n" 1 2 3 4 4 | sort -uc
与那个
printf "%s\n" 1 2 3 4 4 | sort -c
答案2
选项-c
会sort
导致sort
检查输入数据是否正确排序,同时考虑任何其他选项。它不会执行任何排序。在 的一些实现中sort
,-c
可以写成--check
。
因此,sort -u -c
将对数据进行检查,并让您知道数据是否已排序并包含任何重复条目。如果它已排序并且不包含重复条目,则不会显示任何内容,但如果存在重复条目或数据未排序,它将生成一条诊断消息并以非零退出状态退出。
您可以通过以下方式使用它:
if sort -uC file; then
echo 'file is sorted and contains no duplicate entries'
else
echo 'file is unsorted or contains duplicate entries'
fi
该-C
选项执行相同的操作,-c
但停止sort
产生任何输出。-C
有时可以写成--check=quiet
或--check=silent
。
答案3
以下是扩展排序手册 ( info coreutils 'sort invocation'
) 的解释:
' - 独特的'
通常,仅输出比较相等的行序列中的第一行。对于 --check(-c 或 -C)选项,检查没有一对连续行比较相等。
即,将-c
(检查)与-u
(唯一)结合起来,从逻辑上讲,将检查输入中是否有重复项。
例如:
%echo -e "a\na\nb\nc"| sort -c && echo OK
OK
%echo -e "a\na\nb\nc"| sort -uc && echo OK
sort: -:2: disorder: a
虽然输入已排序(a->a->b->c),但存在重复项,因此-uc
会失败。