(respondendo pelo bash)
Não. O shell processa os redirecionamentos primeiro, que então trunca o arquivo. Só então cat
start, e está operando com um arquivo vazio.
Existe uma ferramenta chamada sponge
no pacote moreutils
que permite fazer isso:
cat somefile.txt | sort | uniq | sponge somefile.txt
Este comando pode ser simplificado (remover UUOC ):
sort -u somefile.txt | sponge somefile.txt
Sem sponge
, você precisa gravar em um arquivo temporário e, se o comando for bem-sucedido, sobrescrever o arquivo de entrada
tmpfile=$(mktemp)
sort -u somefile.txt > "$tmpfile" && mv "$tmpfile" somefile.txt