Имам 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