Veja isto: link
Então você pode executar este comando:
sed -n '/<property symbolicName="ROB_EMAIL_ALERT"/s/.*value="\(.*\)"[^\n]*//p' /path/to/file
Eu tenho um arquivo xml com conteúdo abaixo de como imprimir apenas o value='[email protected]'
que está na linha tendo symbolicName="ROB_EMAIL_ALERT"
usando o comando linux shell no Ubuntu.
<entries xmi:id="VariableSubstitutionEntry_1468437285392" symbolicName="DB2UNIVERSAL_JDBC_DRIVER_NATIVEPATH" value="/cidba/udb/V10.5/java"/>
<entries xmi:id="VariableSubstitutionEntry_1468437302240" symbolicName="DB2UNIVERSAL_JDBC_DRIVER_PATH" value="/cidba/udb/V10.5/java"/>
<entries xmi:id="VariableSubstitutionEntry_1468437322544" symbolicName="DB2_JDBC_DRIVER_PATH" value="/cidba/udb/V10.5/java"/>
<entries xmi:id="VariableSubstitutionEntry_1503425349323" symbolicName="ROB_EMAIL_ALERT" value="[email protected]"/>
Veja isto: link
Então você pode executar este comando:
sed -n '/<property symbolicName="ROB_EMAIL_ALERT"/s/.*value="\(.*\)"[^\n]*//p' /path/to/file
Eu faria assim:
sed -nE '/symbolicName="ROB_EMAIL_ALERT"/s/.*(value="[^"]*").*//p'
Este comando sed
pesquisa cada linha contendo symbolicName="ROB_EMAIL_ALERT"
e imprime apenas a parte value="xyz"
dela.
Eu peguei seu exemplo aqui, então quaisquer erros de digitação estão em você. ;)
$ sed -nE '/symbolicName="ROB_EMAIL_ALERT"/s/.*(value="[^"]*").*//p' <test.xml
value="[email protected]"