/ / Imprimir campo con condición - bash, csv, awk, sed

Campo de impresión con condición: bash, csv, awk, sed

Tengo un archivo CSV, que contiene algo así:

"1","32","1","2"
"2","2","22","2"
"3","72","5","2"
"4","36","22","2"

Quiero mostrar solo el primer campo si el tercer campo contiene el valor: 22. En mi ejemplo, quiero tener:

2
4

Estaba pensando algo como esto:

awk -F , -v OFS=, "{if ($3=="22")} {print $1}" myfile.csv

Cómo puedo hacer eso ? Gracias :)

Respuestas

2 para la respuesta № 1

Si está bien, para mantener las comillas:

awk -F, "$3==""22""{print $1}" test.csv

La salida en este caso:

"2"
"4"

Para deshacerte de las comillas, puedes hacer esto:

awk -F" "$6==22{print $2}" test.csv

Salida:

2
4

En este caso, las comillas se tratan como delimitadores. Por lo tanto, tenemos que ajustar la numeración de las columnas.

Por supuesto, también puede reemplazar las comillas:

awk -F, "$3==""22""{str=$1; gsub(""","",str); print str}" test.csv

1 para la respuesta № 2

Aquí hay un comando awk más simple para hacer su trabajo:

awk -F "","|"" "$4 == 22{print $2}" file

2
4

0 para la respuesta № 3

En mi opinión, lo más simple es deshacerse de las comillas dobles y luego hacer lo que quieras:

$ awk -F, "{gsub(/"/,"")} $3==22{print $1}" file
2
4