Que comando sed / awk posso usar? Apenas sort -u
removerá todas as instâncias
Entrada:
abc
abc
def
abc
abc
def
Saída esperada:
abc
def
abc
def
fonte
Que comando sed / awk posso usar? Apenas sort -u
removerá todas as instâncias
Entrada:
abc
abc
def
abc
abc
def
Saída esperada:
abc
def
abc
def
É para isso que uniq
serve o comando padrão.
uniq your-file
Observe que algumas uniq
implementações como o GNU uniq
fornecerão a primeira de uma sequência de linhas que são iguais (onde strcoll()
retorna 0), ao contrário de que são idênticas por bytes a byte (onde memcmp()
ou strcmp()
retorna 0). Para forçar uma comparação de bytes a bytes, independentemente da uniq
implementação, você pode forçar o código do idioma C
com:
LC_ALL=C uniq your-file
O Vim pode conseguir isso muito bem:
:g/\v^(.*\n)\1/d
Ou se você preferir usar o vim como uma ferramenta de linha de comando, faça isso como
vim file -c "g/\v^(.*\n)\1/d" -c "wq"
Dessa forma, você não precisa sair do vim mais tarde;)
Explicação:
:g/
Em todas as linhas que correspondem a este regex ...
\v^(.*\n)\1
Qualquer linha seguida por ela mesma ...
/d
executar o d comando elete (apagar a linha atual). O -c "wq"
é para salvar as alterações e sair.