我正在尝试在HTML文件上打印变量的值该文件可以被称为something.html,我需要打印nbLineValue变量中的数字,在本例中为77
<span class="nbLineLabel"></span><span class="nbLineValue">77</span>
有任何想法吗?
编辑:我设法用以下代码解决问题
grep -oP '<span class="nbLineLabel"></span><span class="nbLineValue">\K[[:digit:]]*' something.html
使用正则表达式是解析XML / HTML数据的不错选择 - 请参阅this question/answer。
你可以使用htmlutils
,但是 - 在Debian,Ubuntu和Arch上,包装是html-xml-utils
。这附带了一个应用程序hxselect
,它可以使用CSS选择器在命令行上执行HTML解析。从文档页面:
hxselect [ -i ] [ -c ] [ -l language ] [ -s separator ] selectors
hxselect
读取格式良好的XML文档,并输出与作为参数给出的CSS选择器之一匹配的所有元素和属性。
在您的情况下,您可以使用如下命令:
cat something.html | hxselect -i -c -s '\n' .nbLineValue
这里使用的选项如下:
-i
:不区分大小写。这适用于HTML,其中元素标记可以是任何情况。-c
:仅显示每个元素的内容(正文),而不显示其周围的标记。这可以确保你获得77
,而不是周围的所有。-s '\n'
:在每个匹配元素后输出一个换行符,以便于解析。.nbLineValue
:选择类nbLineValue
的所有元素