Grep 仅用于标签之间的内容

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)

Gil*_*not 5

永远不要用正则表达式解析 html!这是 stackexchange 站点上最常见的错误。

最好使用 XML/HTML 解析器,如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)

检查:使用带有 HTML 标签的正则表达式