Crear un archivo a partir de otro archivo basándose en un valor numérico en cada línea

Crear un archivo a partir de otro archivo basándose en un valor numérico en cada línea

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 awkcomando 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 whilebucle y touchel 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

información relacionada