Ищите определенное значение из файла

У меня есть 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"/>
-1
задан 6 February 2018 в 17:25

2 ответа

Я бы сделал это так:

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"
0
ответ дан 31 October 2019 в 01:44

Посмотрите это: 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
1
ответ дан 31 October 2019 в 01:44

Другие вопросы по тегам:

Похожие вопросы: