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