Esta pergunta / resposta tem algumas boas soluções para excluir linhas idênticas em um arquivo, mas não funcionará no meu caso, pois as linhas duplicadas têm um carimbo de data / hora.
É possível dizer ao awk para ignorar os primeiros 26 caracteres de uma linha na determinação de duplicatas?
Exemplo:
[Fri Oct 31 20:27:05 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:10 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:13 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:16 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:21 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:22 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:23 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
Se tornaria
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
(mantendo o timestamp mais recente)
text-processing
awk
duplicate
deduplication
um codificador
fonte
fonte
Respostas:
Você pode apenas usar
uniq
com sua-f
opção:De
man uniq
:Na verdade, isso exibirá a primeira linha:
Se isso for um problema, você pode fazer:
ou se você não tiver,
tac
mas seustail
suportes-r
:fonte
fonte
Tente este:
fonte
Uma
perl
solução:fonte
Pode-se usar o poder de
vim
:Muito fácil. Se você tiver mais alguns arquivos (como logs girados em gzip ),
vim
eles serão abertos sem qualquer descompressão preliminar do seu lado e você poderá repetir o último comando pressionando :e ↑. Assim como repetir o último comando no terminal.fonte