Com o GNU grep
vinculado a uma versão recente da biblioteca PCRE (Perl Compatible Regular Expressions), você pode tentar:
$ grep -oP '<essid\b[^<>]*>\K[^<>]*(?=</essid>)' file
WLAN-123651234
Isso extrairia o conteúdo da tag essid
.
Explicação:
-
<essid
corresponde exatamente à string<essid
-
\b
limite de palavra que corresponde entre um caractere de palavra e um caractere de não palavra, vice-versa. -
[^<>]*
classe de caractere negada que corresponde a qualquer caractere, mas não a<
ou>
, zero ou mais vezes. -
\K
descarta todos os caracteres previamente correspondidos da impressão na final. -
[^<>]*
classe de caractere negada que corresponde a qualquer caractere, mas não a<
ou>
, zero ou mais vezes. -
(?=</essid>)
Asserção antecipada positiva que afirma que a correspondência deve ser seguida pela string</essid>
.