#awk
#awk
Вопрос:
У меня есть следующие строки, которые я хотел бы отфильтровать по второму и третьему столбцам.
23/10/2020,15/09/2020,8067363,suv,0,0,0,0,0,0,0,0,0,0
23/10/2020,22/10/2020,08067375,suv,0,0,1,0,0,0,0,0,0,0
23/10/2020,09/09/2020,8067387,suv,0,0,0,0,0,0,0,0,0,0
23/10/2020,21/10/2020,08067399,suv,0,0,0,0,0,0,0,0,0,0
23/10/2020,09/09/2020,8067417,suv,0,0,0,0,0,0,0,0,0,0
Второй столбец — это дата, для которой мне нужны только строки, начинающиеся в октябре (24/10/20).
С другой стороны, я хочу выполнить фильтрацию по третьему столбцу, что я уже сделал, и это работает само по себе (проверено). Мой вопрос в том, что я хочу собрать все это в одну строку, но я продолжаю получать много ошибок из-за синтаксиса и, возможно, регулярных выражений.
То, что я пытаюсь сконструировать, — это что-то вроде этого:
awk ' {if ((/(/d{1,2})/(/d{1,2})/(/d{1,2})/ {$2 = 10}) amp;amp; ($3 ~ /^08/) {print}}' test.csv
Где {$2 > 10}
должно быть регулярное выражение, получающее вторую группу (месяц) и оцениваемое как равное 10. Вторая часть — это третья колонка, начинающаяся с 08, которая работает хорошо.
Ожидаемый результат — это те строки, второй столбец которых — октябрь, а третий столбец начинается с «08».
Например:
27/01/2020,24/10/2020,08077081,suv,0,0,0,0,0,2,0,0,0,0
27/05/2020,15/10/2020,08077082,suv,0,0,0,0,0,2,0,0,0,0
27/08/2020,12/10/2020,08077083,suv,0,0,0,0,0,2,0,0,0,0
Не могли бы вы помочь мне исправить эту строку?
Спасибо
Ответ №1:
$ awk -F'[/,]' '($5 == 10) amp;amp; ($7 ~ /^08/)' file
23/10/2020,22/10/2020,08067375,suv,0,0,1,0,0,0,0,0,0,0
23/10/2020,21/10/2020,08067399,suv,0,0,0,0,0,0,0,0,0,0