У меня есть XML-файл с ниже содержания, как распечатать только value='hard@insurance.com'
который находится в наличии строки symbolicName="ROB_EMAIL_ALERT"
использование Linux окружает команду в 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="hadr@insurance.com"/>
Я бы сделал это так:
sed -nE '/symbolicName="ROB_EMAIL_ALERT"/s/.*(value="[^"]*").*/\1/p'
Эта команда sed
ищет каждую строку, содержащую symbolicName="ROB_EMAIL_ALERT"
, и печатает только ее часть value="xyz"
.
Я взял ваш пример здесь, так что любые опечатки на вас. ;)
$ sed -nE '/symbolicName="ROB_EMAIL_ALERT"/s/.*(value="[^"]*").*/\1/p' <test.xml
value="hadr@insurance.com"
Посмотрите это: https://stackoverflow.com/questions/25508512/shellscript-read-xml-attribute-value
Таким образом, можно выполнить эту команду:
sed -n '/<property symbolicName="ROB_EMAIL_ALERT"/s/.*value="\(.*\)"[^\n]*/\1/p' /path/to/file