В одній із моїх функцій оболонки є наступне:
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/
як змінну, а натомість буквально.