Saltar al contenido

¿Cómo obtener solo los resultados únicos sin tener que ordenar los datos?

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)

Reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *