मेरे शेल कार्यों में निम्नलिखित में से एक:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
, इसलिए जब बुलाया जाता है _process $arg
, के रूप में $arg
पारित हो जाता है $1
, और एक खोज पैटर्न के रूप में उपयोग किया जाता है। यह इस तरह से काम करता है, क्योंकि शेल $1
जाग पैटर्न के स्थान पर फैलता है! इसके अलावा 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/
एक चर के रूप में व्याख्या नहीं करेगा , बल्कि शाब्दिक रूप से।