在我的一个shell函数中具有以下内容:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
,因此当称为时_process $arg
,$arg
将作为传递$1
,并用作搜索模式。它以这种方式工作,因为shell扩展$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/
为变量,而是按字面意义。