Você pode fazer isso usando o recurso hold space
de sed
.
Execute sed
com a opção -n
para suprimir a impressão automática de linhas de entrada.
Quando a linha contendo <SOURCE
for vista, salve o valor do atributo NAME
em sed
' hold space
.
Quando a linha <SOURCEFIELD
contendo XYZ
for vista, imprima o conteúdo do hold space
.
#!/bin/sh
sed -n '
/<SOURCE / { # execute block {} on lines matching "<SOURCE "
s/.* NAME *="// # remove everything upto NAME attribute value
s/".*// # remove everything after attribute value
h # copy pattern space to the hold space
}
/<SOURCEFIELD.*XYZ/ { # SOURCEFIELD contains XYZ, execute {} block
g # copy hold space to pattern space
p # print
}
' "$@"