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
}
' "$@"