Memiliki yang berikut di salah satu fungsi shell saya:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
, jadi ketika dipanggil sebagai _process $arg
, $arg
akan dilewati sebagai $1
, dan digunakan sebagai pola pencarian. Ini bekerja seperti ini, karena shell mengembang $1
di tempat pola awk! Juga l
dapat digunakan di dalam program awk, sedang dideklarasikan dengan -v l="$line"
. Semua baik-baik saja
Apakah mungkin dengan cara yang sama memberikan pola untuk mencari sebagai variabel?
Mengikuti tidak akan berhasil,
awk -v l="$line" -v search="$pattern" '
BEGIN {p=0}
/search/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
, sebagai awk tidak akan menafsirkan /search/
sebagai variabel, tetapi secara harfiah.