awk: 구문 오류

awk: 구문 오류

코드는 다음과 같습니다.

for i in "${x[@]}"
do
        z+=$(awk '$1 == '$i' {print $2}' $file)
done
echo "${z[@]}"

다음과 같은 오류와 원하는 출력이 제공됩니다.

awk: cmd. line:1: $1 ==  {print $2}
awk: cmd. line:1:        ^ syntax error

$1값이 값과 일치하지 않을 때 $i이 오류가 표시되는 것 같습니다 .

누군가 이 문제를 해결하는 방법을 말해 줄 수 있습니까?

나는 전에 시도했습니다 -v:

z+=$(awk -v '$1 == '$i' {print $2}' $file)

그러나 이것은 치명적이다:

awk: fatal: `$1 ' is not a legal variable name

답변1

$i를 awk에 변수로 전달합니다.

z+=$(awk -v vari="$i" '$1 == vari {print $2}' "$file")

관련 정보