我对 linux 和 bash 脚本还很陌生。我正在尝试使用 curl 命令读取 xml 文件并计算单词 </entity>
的出现次数
curl -s "https://server:port/app/collection/admin/file?wt=xml&_=12334343432&file=samplefile.xml&contentType=text%2Fxml%3Bcharset%3Dutf-8" | grep '</entity>' -oP | wc -l
这可以正常工作,但是 xml 文件包含如下注释,导致计数错误。
示例 XML 文件
.........
........
<entity>
.......
.......
</entity>
........
........
<!--
.......
<entity>
........
</entity>
.......
.......
-->
<entity>
.......
........
</entity>
预期的输出应该是 2,因为其中一个匹配项在评论 block 内。
最佳答案
与往常一样,在处理 XML 时,正则表达式是不适合这项工作的工具。使用了解格式的东西。例如,使用 xmllint
和一些 XPath:
curl ... | xmllint --xpath 'count(//entity)' -
(注意尾随的 -
;与许多程序不同,如果未在命令行上给出文件名,xmllint
不会自动从标准输入读取)
关于regex - Grep 排除 curl 主体的注释 <!-- --> 之间的匹配出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72228570/