bash에서 awk로 공백이 있는 변수 전달

bash에서 awk로 공백이 있는 변수 전달

bash에서 awk로 공백이 포함된 변수를 전달하려고 합니다. 단일 문자열 변수(파일의 첫 번째 열에서 변수를 검색하는 경우)를 사용하여 이 작업을 수행하는 간단한 스크립트가 있습니다. 예를 들면 다음과 같습니다.

var=string

awk -v v=$var '(index($1, v) !=0) {print}' FILE

그렇다면 이것은 작동하지 않습니다 var="string1 string2". 두 번째 변수에 표시된 것처럼 변수가 공백으로 구분된 단어 그룹인 새로운 검색이 있습니다. 예를 들어,

var="string1 string2 string_n"

awk -v v=$var '(index($1, v) !=0) {print}' FILE

답변1

$var또한 명령에 이중 아포스트로피를 입력 해야 합니다 awk.

varName="a string with spaces"
awk -v var="$var" '{...your awk code...}'

이는 awk 명령이 쉘에 의해 호출되고 대부분의 쉘(bash 포함)은 변수 대체 후 태그를 잊어버리기 때문입니다.

관련 정보