Имея следующее в одной из моих функций оболочки:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
, Так что, когда называется _process $arg, $argполучает прошло , как $1и используется в качестве шаблона поиска. Это работает так, потому что оболочка расширяется $1вместо шаблона awk! Также lможет использоваться внутри программы awk, будучи объявленным с помощью -v l="$line". Все хорошо.
Можно ли таким же образом задать шаблон для поиска в качестве переменной?
Следующее не сработает,
awk -v l="$line" -v search="$pattern" '
BEGIN {p=0}
/search/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
, поскольку awk не будет интерпретироваться /search/как переменная, а будет буквально.