guarde cada línea de csv en un archivo nuevo con el nombre de archivo como la cadena contenida en una columna específica

guarde cada línea de csv en un archivo nuevo con el nombre de archivo como la cadena contenida en una columna específica

Tengo un archivo csv en una máquina Linux como este:

value1 value2 name  
1      2      a  
2      3      b  
4      5      c  

Lo que quiero es dividir las nentradas de este csv en narchivos de texto con solo los números correspondientes en ese archivo separados por espacios. N está determinado por el valor del nombre.

Entonces el csv anterior se convertiría en:

  • a.txtque contiene1 2
  • b.txtque contiene2 3
  • c.txtque contiene4 5

En caso de que haya varias entradas para un determinado archivo name, éstas deberían ir juntas en un solo archivo.

ex si hubiera

1  2  a   
21 31 a

entonces debería haber un single a.txtcon

1  2     
21 31

Respuesta1

Es bastante simple en realidad

awk '{print $1, $2 > $3 ".txt"}' file.csv

Sólo debería tener problemas si habrá más de mil archivos nuevos

información relacionada