根据文件中的子字符串名查找唯一的字符串名。
使用的命令:
cat test.xml | grep -i current | awk -F / '{print $NF}' | tr -d
什么有效:
文件内容:
<Context path="/SomeApi" reloadable="false" docBase="http://some-domain/CURRENT/SomeApi-CURRENT.war"
输出(期望的输出):
SomeApi-CURRENT.war
什么不起作用:
文件内容:
<Context path="/SomeApi" reloadable="false" docBase="http://some-domain/CURRENT/SomeApi-CURRENT.war" workDir="/U01/someApi/work
输出:
work className=URLStandardContext unpackWAR=true>
需要输出SomeApi-CURRENT.war
最佳答案
看来,您对 xml 元素的 docBase 属性感兴趣。特别是那些值字符串包含“current”作为子字符串的值。
grep -i current test.xml | grep -o " docBase=\"[^\"]*" | rev | cut -d'/' -f1 | rev
但这是一个有点粗糙的解决方案。为了保证正确性,必须做出多个假设。
由于使用 grep 等并不理想,您可能需要检查 xmllint这是一个用于解析 xml 输入的命令行工具。使用 XPath 命令可能看起来像这样:
xmllint --xpath "//Context[contains(translate(@docBase,'CENRTU', 'cenrtu'), 'current')]/@docBase" test.xml | rev | cut -d'/' -f1 | cut -c2- | rev
关于linux - 通过 bash 在文件中搜索字符串,但只能匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56564290/