Bash 스크립트에 변수가 있는 awk 모드

Bash 스크립트에 변수가 있는 awk 모드

Bash에서 awk 명령을 사용하는 데 문제가 있습니다. 변수가 있는 패턴을 찾고 싶지만 작동하지 않습니다. 이 줄에 어떤 문제가 있는지 알려주실 수 있나요?

awk -F" "  "/$PWD/ {print $1,$3}"  file.txt

답변1

큰따옴표를 사용했기 때문에 모든 $- 변수는 awk에 도달하기 전에 bash 확장됩니다. 첫 번째 질문은 { print $1, $3 }다음과 같습니다 { print , }. .

다음으로 사용하려는 awk 구문은 다음과 같습니다 /<regular expression>/ { <action> }. 정규식은 따옴표 없는 슬래시를 허용하지 않지만 $PWD확실히 일부 포함되어 있습니다. 두 번째 질문입니다.

다음과 같이 시도해 볼 수 있습니다.

"/${PWD//\//\\/}/ { print \$1, \$3 }"

/이를 위해서는 bash가 in의 모든 발생을 대체 $PWD하고 기호를 \/이스케이프하여 bash가 해당 기호를 그대로 유지하도록 해야 합니다.$$1$3

관련 정보