O AWK é muito poderoso e perfeito para isso. Basicamente, você quer:
- Salve o endereço na linha de endereço
- Se o ESSID corresponder ao seu valor, imprima-o
A versão mais curta que eu pude pensar:
sudo iwlist wlan0 scan|awk '/Address:/{a=$5}/ESSID:"name"/{print a}'
/pattern/
é uma expressão regular que é comparada com a entrada. Se coincide, a parte depois das chaves ( {...}
) é executada.
O comando awk
processa a linha de entrada por linha:
- Se uma linha corresponder a
Address:
, o quinto campo será armazenado em uma variável chamadaa
. Os campos são linhas delimitadas por espaços em branco. - Se uma linha corresponder a
ESSID:"name"
, a variávela
será impressa (o último endereço correspondente).
As duas regras são executadas, mas 1 vem antes de 2, então a
é sempre definido.