/ / Поле за печат със състояние - bash, csv, awk, sed

Печатно поле със състояние - bash, csv, awk, sed

Имам CSV файл, който съдържа нещо подобно:

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

Искам да показвам само първото поле, ако третото поле съдържа стойността: 22. В моя пример искам да имам:

2
4

Мислех си нещо подобно:

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

Как мога да направя това ? Благодаря ти :)

Отговори:

2 за отговор № 1

Ако е добре, да запазите кавички:

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

Изходът в този случай:

"2"
"4"

За да се отървете от кавичките, можете да направите това:

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

изход:

2
4

В този случай кавичките се третират като разделители. Ето защо трябва да коригираме номерацията на колоните.

Разбира се, можете също да замените кавичките:

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

1 за отговор № 2

Ето по-проста команда, за да свършите работата си:

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

2
4

0 за отговор № 3

IMHO най-простото нещо е да се отървете от двойните кавички и след това да направите каквото искате:

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