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.
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.
Tente isso uma vez
awk -F " " -v 'var="$temp1" var2="$temp2"' '$1 == var && $3 == var2' /root/smaple.txt
você estava comparando com o valor
Tags command-line awk linux shell