Регулярное выражение AWK для получения даты месяца

#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