Elimina líneas duplicadas de un archivo
Estoy haciendo un diccionario de passwords más usados, los populares o frecuentemente más usados por los usuarios (… no pregunten el por qué… JAJAJA), para ello estoy tomando texto de otros diccionarios etc, pero, me veo en la situación de que hay muuuchos passwords duplicados, y necesito eliminar las líneas duplicadas.
O sea, por ejemplo … tenemos el siguiente archivo: pass.txt
Y su contenido es:
asdasd
lola
love
asdasd
windows
admin
linux
asdasd
love
Como vemos, tenemos repetido “love” y “asdasd“, este último 3 veces. ¿cómo eliminar las líneas duplicadas?
Para hacerlo es simple, con este comando:
cat pass.txt | sort | uniq > pass-listos.txt
Esto nos generará un archivo llamado pass-listos.txt que contendrá:
admin
asdasd
linux
lola
love
windows
Lo que hace el comando es MUY simple…
- cat pass.txt -» Lista el contenido del archivo.
- sort -» Ordena el contenido alfabéticamente.
- uniq -» Elimina las líneas duplicadas.
- > pass-listos.txt -» El resultado de los comandos anteriores, ponlo en el archivo pass-listos.txt (que, como no existe, lo creará)
Así de simple… recién descubro que el comando sort sí, es muy bueno… pero, unido a uniq, son una joya de arte
Espero les haya sido de utilidad.
Saludos
Tambien se puede usar sort -u.
Felicidades por el blog, me encanta!
Síp cierto.
Nada, muchas gracias a tí por comentar
Bienvenido
Saludos
El problema con eso es que te cambia el orden de las palabras, funciona… pero al final el resultado difiere bastante del original en el orden (que tal vez en algun caso importe)
Síp en efecto, esto ordena las palabras alfabéticamente, por lo que si el contenido se necesitaba SIN variaciones, ahí esta solución no es la idónea.
gracias
es bastante útil
Muy bueno! Una solucion simple y clara. Me gustan las cosas así
He de reconocer que yo habría hecho algo en Python pero esta solución está muy bien.
Gracias ^-^
hola! muy bueno!
tengo una consulta por favor,
me funcionaría para el siguiente ejemplo:
ABCD 1111
DEFG 2222 45455
ABCD 1111
DEFG 2222
Las filas son iguales pero tienen espacios y algunos caracteres mas… esto comprueba por palabra igual? o por renglon? me explico?
desde ya, te agradezco un monton.
Un abrazo
Hola que tal,
Según ví, esto compara líneas y no columnas, por lo que en el ejemplo que me pones esto quitaría o la 1ra línea o la 3ra, la 2da y 4ta línea a pesar de que son casi idénticas, no son 100% idénticas pues tienen una columna de diferencia.
Gracias por el comentario ^-^
Gracias a vos!! antes tardaba uan hora por oracle para eliminar duplicados… ahora tardo 30 segundos con el cat sort!!
Yo lo requiero en PHP :S
Uff… yo de PHP es que ando muy pero muy corto, no soy programador en realidad
Lo siento.