1

Я нашел эту команду. Если в строке есть интересующее слово, команда выведет всю строку:

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

smaple.txt содержит:

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

Теперь я хочу проверить два значения, т.е. если эти два значения в строке, команда выведет строку:

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

Ожидаемый вывод для моей команды:

sample demo 123 456

Но это не работает.

2 ответа2

1

Вы перепутали имена переменных:

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

Также параметр -v должен использоваться несколько раз, когда вам нужно несколько переменных.

0

Попробуйте это один раз

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

вы сравнивали со значением

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .