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 uniq
aunque 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.