Esta pregunta / respuesta tiene algunas buenas soluciones para eliminar líneas idénticas en un archivo, pero no funcionará en mi caso, ya que las líneas duplicadas tienen una marca de tiempo.
¿Es posible decirle a awk que ignore los primeros 26 caracteres de una línea para determinar duplicados?
Ejemplo:
[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 convertiría
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
(manteniendo la marca de tiempo más reciente)
text-processing
awk
duplicate
deduplication
un codificador
fuente
fuente
Respuestas:
Solo puede usar
uniq
con su-f
opción:De
man uniq
:En realidad, esto mostrará la primera línea:
Si eso es un problema, puede hacer:
o si no tienes
tac
pero tustail
apoyos-r
:fuente
fuente
Prueba este:
fuente
Una
perl
solución:fuente
Uno puede usar el poder de
vim
:Muy fácil. Si tiene un par de archivos más (como registros rotados comprimidos ),
vim
los abrirá sin ninguna descompresión preliminar de su lado y puede repetir el último comando presionando :y ↑. Justo como repetir el último comando en la terminal.fuente