이 변수가 awk에 전달되지 않는 이유는 무엇입니까? [복사]

이 변수가 awk에 전달되지 않는 이유는 무엇입니까? [복사]

중복 가능성:
awk의 외부 변수

아래에서 이 변수를 전달하는 방법은 무엇입니까?

이것은 작동하지 않습니다:

fname=testfile.txt
lsof | awk '/deleted/&&/$fname/ {print $4}'  *----no output*

이것이 작동하는 동안:

lsof | awk '/deleted/&&/testfile.txt/ {print $4}'
3r

답변1

이는 쉘 변수가 작은따옴표로 확장되지 않기 때문에 발생합니다. 패턴을 다음과 같이 전달하려면 awkwith를 사용하세요 .-vawk

fname=testfile.txt
lsof | awk -v pattern="$fname" '/deleted/ && $0 ~ pattern { print $4 }'

관련 정보