Generaremos un archivo csv con los siguientes valores.
yp1234,577,1,3
yp5678,570,3,5
yp9012,132,8,9
Necesito extraer datos y crear archivos basados en la segunda columna. Si su valor es mayor que 577, entonces se debe extraer toda la línea y colocarla en un archivo separado.
Quiero decir, necesito un archivo que tenga líneas con una segunda columna mayor que 577.
Respuesta1
Se puede hacer usando el siguiente comando.
awk -F "," ' $2 >= 577 ' filename.csv > create_files
Puede colocar todo el contenido anterior en un archivo nuevo (le he llamado al nuevo archivo create_files
) y ahora puede crear nuevos archivos a partir de este archivo.
Después de ejecutar el comando anterior, dado que no ha mencionado ninguna convención de nombre de archivo, asumí que la primera columna puede actuar como nombre de archivo. Entonces, puedes seguir el enfoque como,
awk -F "," '{ print $1 }' create_files | while read a; do touch $a; done
Estoy usando el awk
comando para extraer la primera columna solo para tener los nombres de los archivos y, en base a la primera columna, creo los nuevos archivos usando el while
bucle y touch
el comando.
Sin embargo, supongo que la primera columna siempre será única. Si no es único, es posible que debamos seguir otro enfoque. Para eso, debe editar su pregunta y mencionar qué convención de nombre de archivo está planeando.
Respuesta2
Ventanilla única con awk
, asumiendo que la columna 1 es única
awk -F "," '$2 >= 577 { print $0 > $1 }' my.csv