es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo dividir un archivo CSV en varios archivos txt usando awk (u otra herramienta de línea de comandos)?

Tengo un archivo CSV que se ve así:

1,apple
2,orange
3,orange
4,pear
5,banana

El archivo CSV tiene miles de filas.

Ahora quiero dividirlo en miles de archivos .txt separados.

Cada archivo .txt debe nombrarse con el número antes de la coma y el contenido del archivo .txt debe contener la palabra después de la coma, así:

1.txt contiene: apple
2.txt contiene: orange
3.txt contiene: orange
4.txt contiene: pear
5.txt contiene: banana

y así sucesivamente.

Hay una pregunta similar aquí que pregunta cómo hacer esto usando un script bash, pero quiero hacerlo usando la línea de comandos (awk o similar) y las respuestas actuales en esa pregunta que usan awk no funcionan correctamente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr dividir el archivo CSV en miles de archivos .txt separados utilizando la línea de comandos y awk, puedes utilizar el siguiente comando:

    awk -F "," '{print $2 > $1".txt"}' tu_archivo_csv.csv

    Explicación:

    • -F "," establece el separador de campos como “,” en el archivo CSV.
    • '{print $2 > $1".txt"}' especifica la acción a realizar en cada línea del archivo CSV. Imprime el segundo campo (palabra después de la coma) en un archivo con el nombre del primer campo (número antes de la coma) y extensión “.txt”.
    • tu_archivo_csv.csv es el nombre de tu archivo CSV.

    Nota: Este comando asume que todos los números en la primera columna son únicos. Si hay números duplicados, solo se guardará la última aparición de cada número en su archivo correspondiente.

Comments are closed.