awk: erro de sintaxe

0

Abaixo está o código:

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

Está dando o seguinte erro com a saída desejada:

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

Acredito que quando o valor $1 não está correspondendo ao valor $i , ele está mostrando esse erro.

Alguém pode me dizer como isso pode ser usado?

Eu tentei com -v :

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

mas está dando fatal:

awk: fatal: '$1 ' is not a legal variable name
    
por serenesat 08.11.2017 / 14:52

1 resposta

1

Passe $ i para awk como uma variável e, portanto:

z+=$(awk -v vari="$i" '$1 == vari {print $2}' "$file")
    
por 08.11.2017 / 15:18

Tags