Есть еще один способ получить переменную оболочки в awk - используйте опцию awk -v
:
awk -v pattern="$shell_var" '$4 ~ pattern {print $1, $2}' "$FILENAME"
Используйте -v несколько раз, если у вас есть несколько переменных для передачи в awk.
Если вы действительно хотите хранить вашу awk-программу в переменной оболочки, создайте ее, используя printf
:
awk_script="$( printf '$4 ~ /%s/ {print $1, $2}' "$shell_var" )"
awk "$awk_script" "$FILENAME"
Обратите внимание на использование кавычек в команде printf: одинарные кавычки вокруг шаблона для защиты знаков доллара, которые вы хотите интерпретировать с помощью awk, двойные кавычки для переменных оболочки.