awk -v n=3 '/<Car>/ && !--n {getline; print; exit}'
Ou:
awk '/<Car>/ && ++n == 3 {getline; print; exit}'
Para passar o padrão de pesquisa como uma variável:
var='<car>'
PATTERN="$var" awk -v n=3 '
$0 ~ ENVIRON["PATTERN"] && ++n == 3 {getline; print; exit}'
Aqui, em ENVIRON
vez de -v
como -v
expande, as seqüências de escape de barra invertida e barras invertidas são frequentemente encontradas em expressões regulares (portanto, é necessário duplicar -v
).
O GNU awk
4.2 ou superior permite atribuir variáveis como regexps de tipo forte . Desde que seu modo POSIX não esteja ativado (por exemplo, através da $POSIXLY_CORRECT
variável de ambiente, você pode:
# GNU awk 4.2 or above only, when not in POSIX mode
gawk -v n=3 -v pattern="@/$var/" '
$0 ~ pattern && ++n == 3 {getline; print; exit}'
sed
,awk
ou mesmogrep
, é aconselhável fazer uso de um analisador XML.