Saltar al contenido

Cómo eliminar palabras duplicadas de un archivo de texto sin formato usando el comando de Linux

Nuestros mejores programadores han agotado sus provisiones de café, por su búsqueda a tiempo completo por la resolución, hasta que Román encontró la respuesta en GitLab así que hoy la compartimos con nosotros.

Solución:

Suponiendo que las palabras son una por línea y que el archivo ya está ordenado:

uniq filename

Si el archivo no está ordenado:

sort filename | uniq

Si no son uno por línea, y no te importa que sean uno por línea:

tr -s [:space:] \n < filename | sort | uniq

Sin embargo, eso no elimina la puntuación, así que tal vez quieras:

tr -s [:space:][:punct:] \n < filename | sort | uniq

Pero eso elimina el guión de las palabras con guión. "hombre tr" para más opciones.

ruby -pi.bak -e '$_.split(",").uniq.join(",")' filename ?

Admito que los dos tipos de citas son desagradables.

Crear una lista única es bastante fácil gracias a uniqaunque a la mayoría de los comandos de Unix les gusta una entrada por línea en lugar de una lista separada por comas, por lo que debemos comenzar por convertirlo a eso:

$ sed 's/, /n/g' filename | sort | uniq
word1
word2
word3
word4
word5
word6
word7

La parte más difícil es volver a poner esto en una línea con comas como separadores y no como terminadores. Utilicé una sola línea de perl para hacer esto, pero si alguien tiene algo más idiomático, edítame. 🙂

$ sed 's/, /n/g' filename | sort | uniq | perl -e '@a = <>; chomp @a; print((join ", ", @a), "n")'
word1, word2, word3, word4, word5, word6, word7

Sección de Reseñas y Valoraciones

Si estás contento con lo expuesto, puedes dejar una reseña acerca de qué le añadirías a esta reseña.

¡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 *