Hola, hemos encontrado la respuesta a tu pregunta, has scroll y la verás a continuación.
Solución:
perl -ne 'print unless $seen$_++' data.txt
O, si debe tener un uso inútil de cat
:
cat data.txt | perl -ne 'print unless $seen$_++'
Aquí hay un awk
traducción, para sistemas que carecen de Perl:
awk '!seen[$0]++' data.txt
cat data.txt | awk '!seen[$0]++'
John tiene una herramienta llamada unique
:
[email protected] % cat data.txt | unique out
[email protected] % cat out
aaaaaa
cccccc
bbbbbb
Lograr lo mismo sin herramientas adicionales en una sola línea de comando es un poco más complejo:
[email protected] % cat data.txt | nl | sort -k 2 | uniq -f 1 | sort -n | sed 's/s*[0-9]+s+//'
aaaaaa
cccccc
bbbbbb
nl
imprime los números de línea delante de las líneas, por lo que si sort
/uniq
detrás de ellos, podemos restaurar el orden original de las líneas. sed
simplemente elimina los números de línea después;)
Prefiero usar esto:
cat -n data.txt | sort --key=2.1 -b -u | sort -n | cut -c8-
cat -n
agrega números de línea,
sort --key=2.1 -b -u
ordena en el segundo campo (después de los números de línea agregados), ignorando los espacios en blanco iniciales, manteniendo líneas únicas
sort -n
ordena en estricto orden numérico
cut -c8-
mantenga todos los caracteres de la columna 8 a EOL (es decir, omita los números de línea que incluimos)