Имея следующее в одной из моих функций оболочки:
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/
как переменная, а будет буквально.