
En alguna ocasión me ha ocurrido que tengo un conjunto de datos en un archivo de texto y muchas de las líneas del mismo están duplicadas.
Si el archivo que tengo es bastante grande, y además, tengo la necesidad de posteriormente ordenarlo, lo más lógico es previamente eliminar dichos duplicados.
Necesito, por tanto, un archivo de texto que presente dicha información pero del cual se hayan eliminado las filas idénticas. Para ello, si estamos usando un sistema Linux o un sistema Unix-like, podremos hacer uso del comando awk desde la propia consola. Es decir, también puedes hacer uso de esto en tu sistema Mac OS X.
Supongamos que tienes, o creas, un archivo con la siguiente información:
1 2 3 4 5 6 7 8 9 | $ more inicial.txt Juan Pedro Rocio María Juan María Felipe Pedro |
Para eliminar las líneas duplicadas del mismo, llamaríamos al comando awk de la siguiente forma:
1 | awk '!seen[$0]' inicial.txt final.txt |
donde inicial.txt hace referencia a nuestro archivo, y final.txt es el nuevo archivo que se creará donde no se encontrarán las líneas duplicadas del archivo original.
Al ejecutarlo y finalizar su ejecución, si revisamos qué contenido tiene el nuevo archivo final.txt, podemos ver lo siguiente:
1 2 3 4 5 6 | $ more final.txt Juan Pedro Rocio María Felipe |
Como puedes ver, el nuevo archivo muestra las diferentes filas, eliminando los duplicados, del archivo original.

Un pensamiento sobre “Cómo eliminar líneas duplicadas de un archivo de texto usando AWK”
Suponiendo que tengo origen.txt y quiero un archivo destino.txt
Escribo el comando awk ‘!seen[$0]’ origen.txt destino.txt
Me despliega las lineas (así que parece que lo hace, pero al final siempre me sale este error
awk: línea ord.:1: fatal: no se puede abrir el fichero `destino.txt’ para lectura(No such file or directory)
No me crea el archivo y no puedo encontrar que es lo que me esta fallando. Probe instalando Bash de Linux a mi windows 10, luego lo quite y ahora estale cygwin