У меня есть рабочий снайпер:
grep 0rang3 /tmp/wifiSpot.txt | awk '/0rang3/{flag=1} flag; /Pairwise/{flag=0}' /tmp/wifiSpot.txt
теперь вместо '0rang3' мне нужна переменная, которая читается:
read -rp 'what essid ?' ESSID
если это essid, состоящий из нескольких слов, например Orange Airbox-B59C, мне нужно обернуть его следующим образом: «$ {ESSID}» вместо «$ ESSID»
когда я пытаюсь
grep "${ESSID}" /tmp/wifiSpot.txt | awk '/\"${ESSID}\"/{flag=1} flag; /Pairwise/{flag=0}' /tmp/wifiSpot.txt
grep "$ {ESSID}" -> работает, но,
awk '/ \ "$ {ESSID} \" / ... -> не работает
Я пытался:
'/\"\$\{ESSID\}\"/
'/ $ ESSID /
Я не могу найти способ заставить его работать
Есть идеи, ребята? заранее спасибо.
wrt grep 0rang3 /tmp/wifiSpot.txt | awk '/0rang3/
- какие строки из вывода grep, по вашему мнению, НЕ будут соответствовать одному и тому же регулярному выражению в awk? редактировать ваш вопрос, чтобы включить краткий, тестируемый образец ввода и ожидаемый результат, если вам нужна помощь.
часть grep не имеет смысла в вашей цепочке каналов, в команде awk вы не читали ничего, что вы передали в канал. Вы можете удалить это.
Что вам нужно:
awk -v pat = "$ESSID" '$0~pat{flag=1}flag; /Pairwise/{flag=0}' yourFile
Взгляните на параметр
-v
в awk.