Conditional AND in awk com variáveis de ambiente

1

Eu encontrei este comando. Se uma linha tiver uma palavra interessada, o comando exibirá a linha inteira:

temp="sample"
awk -F " " -v var="$temp" '$1 == var' /root/smaple.txt

smaple.txt contém:

sample demo 123 456
sample2 demo2 567 345
sample3 demo4 453 456

Agora quero verificar dois valores, ou seja, se esses dois valores em uma linha, o comando exibirá a linha:

temp1="sample"
temp2="123"
awk -F " " -v var="$temp1" var2="$temp2" '$1 == temp1 && $3 == temp2' /root/smaple.txt

A saída esperada para o meu comando:

sample demo 123 456

Mas não está funcionando.

    
por Veerendra 06.10.2015 / 14:50

2 respostas

1

Você confundiu os nomes das variáveis:

temp1="sample"
temp2="123"
awk -v temp1="$temp1" -v temp2="$temp2" '$1==temp1 && $3==temp2' file

Além disso, o parâmetro -v deve ser usado várias vezes, quando você precisar de várias variáveis.

    
por 06.10.2015 / 15:09
0

Tente isso uma vez

awk -F " " -v 'var="$temp1" var2="$temp2"' '$1 == var && $3 == var2' /root/smaple.txt

você estava comparando com o valor

    
por 06.10.2015 / 14:59