Ordenação rigorosa significa que nenhum valor pode ser repetido. Compare a saída de
printf "%s\n" 1 2 3 4 4 | sort -uc
com o de
printf "%s\n" 1 2 3 4 4 | sort -c
A página man da opção sort
-u
diz:
with
-c
, check for strict ordering; without-c
, output only the first of an equal run
Alguém pode traduzir isso para o inglês básico para mim? A opção -uc
me dá a mesma saída que apenas -c
.
Ordenação rigorosa significa que nenhum valor pode ser repetido. Compare a saída de
printf "%s\n" 1 2 3 4 4 | sort -uc
com o de
printf "%s\n" 1 2 3 4 4 | sort -c
A opção -c
para sort
faz com que sort
verifique se os dados de entrada estão classificados corretamente, considerando outras opções. Não realizará nenhuma classificação. Em algumas implementações de sort
, -c
pode ser escrito --check
.
Portanto, sort -u -c
executaria uma verificação nos dados e informaria se os dados estão classificados e contêm entradas duplicadas. Se estiver classificado e não contiver entradas duplicadas, ele não dirá nada, mas se houver entradas duplicadas ou se os dados não forem classificados, ele produzirá uma mensagem de diagnóstico e sairá com um status de saída diferente de zero.
Você pode usar isso da seguinte maneira:
if sort -uC file; then
echo 'file is sorted and contains no duplicate entries'
else
echo 'file is unsorted or contains duplicate entries'
fi
A opção -C
faz o mesmo que -c
, mas impede que sort
produza qualquer saída. -C
às vezes pode ser escrito --check=quiet
ou --check=silent
.
Aqui está como o manual de classificação estendida ( info coreutils 'sort invocation'
) explica:
‘--unique’
Normally, output only the first of a sequence of lines that compare equal. For the --check (-c or -C) option, check that no pair of consecutive lines compares equal.
Ou seja. combinar -c
(check) com -u
(unique) irá, logicamente, verificar se não há duplicatas na entrada.
Por exemplo:
%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
Enquanto a entrada estiver classificada (a- > a- > b- > c), haverá duplicatas, portanto, -uc
falhará.
Tags sort