В сценарии оболочки у меня есть пара переменных:
last_month=$(date +%m -d "-1 month")
year=$(date +%Y -d "-1 month")
То, что третье поле (дата) в файле (с использованием "|" в качестве разделителя) должно совпадать:
awk -v awk_last_month="$last_month" -v awk_year="$year" -i inplace 'BEGIN {FS=OFS="|"} match($3,/^[0-9]+\/awk_last_month\/awk_year/)' "$export_name"
Я уверен, что в поле (много!) Совпадают строки, и я провел несколько тестов, чтобы заставить AWK распечатать переданные переменные (awk_last_month и awk_year): он печатает их, но когда они используются внутриmatch () сопоставление не удается, и я получаю пустой файл.Я думал, что это как-то связано с косой чертой даты (https://unix.stackexchange.com/questions/120788/pass-shell-variable-as-a-pattern-to-awk),, но согласно приведенному выше коду они экранированы.