Você pode usar sponge
do pacote moreutils :
LC_ALL=C sort -u filename | sponge filename
Você também não precisa canalizar para uniq
, desde quando a opção sort
tem -u
para linhas exclusivas ao classificar.
Note que no sistema GNU com localidades UTF-8, sort -u
ou sort | uniq
não fornecem linhas exclusivas, mas o primeiro da sequência de linhas que ordenam o mesmo na localidade atual.
$ printf '%b\n' '\U2460' '\U2461' | LC_ALL=en_US.utf8 sort | LC_ALL=en_US.utf8 uniq
①
forneceu apenas ①
. Alterar o código de idioma para C forçará a ordem de classificação com base nos valores de bytes:
$ export LC_ALL=C
$ printf '%b\n' '\U2460' '\U2461' | LC_ALL=C sort | LC_ALL=C uniq
①
②