从文件中搜索特定值

从文件中搜索特定值

我有一个包含以下内容的 xml 文件,如何在 Ubuntu 中使用 linux shell 命令仅打印行中的内容。value='[email protected]'symbolicName="ROB_EMAIL_ALERT"

<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]"/>

答案1

看看这个: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

答案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="[email protected]"

相关内容