내 쉘 함수 중 하나에 다음이 포함됩니다.
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/
변수로 해석되지 않고 문자 그대로 해석합니다.