Que comando sed/awk posso usar? Apenas sort -u
irá remover todas as instâncias
Entrada:
abc
abc
def
abc
abc
def
Saída esperada:
abc
def
abc
def
Que comando sed/awk posso usar? Apenas sort -u
irá remover todas as instâncias
Entrada:
abc
abc
def
abc
abc
def
Saída esperada:
abc
def
abc
def
É para isso que serve o
uniq
comando padrão.Observe que algumas
uniq
implementações como GNUuniq
fornecerão a primeira de uma sequência de linhas que classificam da mesma forma (ondestrcoll()
retorna 0) em vez de serem idênticas byte a byte (ondememcmp()
oustrcmp()
retorna 0). Para forçar uma comparação byte a byte independentemente dauniq
implementação, você pode forçar a localidadeC
com:O Vim pode conseguir isso muito bem:
Ou se você preferir usar o vim como uma ferramenta de linha de comando, você pode fazer isso como
Dessa forma, você não precisa lutar para sair do vim mais tarde;)
Explicação:
Em todas as linhas que correspondem a este regex...
Qualquer linha seguida por si mesma...
execute o comando d elete (exclua a linha atual). O
-c "wq"
é para salvar as alterações e sair.Aqui está um
awk
equivalente:p!=$0;
linha de impressão se não for idêntica à anterior,;
é necessário aqui.{p=$0}
definidop
para a linha atual.Um bug óbvio está faltando a primeira linha se estiver vazia. Uma correção simples é: