pka*_*mol 2 grep regular-expression html
我有一个 html 类型的文件,它在某处包含一个标签,如下所示:
<Currentnumber>0.3.5</Currentnumber>
Run Code Online (Sandbox Code Playgroud)
如何在变量中捕获值0.3.5
并且仅捕获此值?
我已经按照以下方式对线路进行了搜索:
grep -E "<Currentnumber>.*</Currentnumber>$" myfile
Run Code Online (Sandbox Code Playgroud)
如果出于教育目的,任何答案也提供了对所用grep
参数的解释,我将不胜感激。
请注意,该行以一些空格(或制表符)开头,这就是为什么以下内容不起作用
grep -E "^<Currentnumber>.*</Currentnumber>$" myfile
Run Code Online (Sandbox Code Playgroud)
永远不要用正则表达式解析 html!这是 stackexchange 站点上最常见的错误。
最好使用 XML/HTML 解析器,如xmllint、xmlstarlet或saxon-lint我自己的项目
例子 :
xmllint --xpath '//Currentnumber/text()' file.html
xmlstarlet sel -t -v '//Currentnumber/text()' file.html
saxon-lint --xpath --html '//Currentnumber/text()' file.html
Run Code Online (Sandbox Code Playgroud)