【发布时间】:2018-09-03 06:41:02
【问题描述】:
我正在尝试使用 bash 来解析和使用 grep 的 HTML 文件。
HTML 不会改变,所以我应该能够很容易地找到文本。
HTML 将是这样的,我只想要每次文件更改时都会更改的数字:
<div class="total">
900 files inspected,
28301 offenses detected:
</div>
grep -E '^<div class="total">.</div>' my_file.html
理想情况下,我只想提取违规次数,因此在上面的示例中为 28301。我也想将其分配给一个变量。
我接近了吗?
【问题讨论】:
-
一种更可靠的方法类似于
tidy -asxml <my_file.html | xmlstarlet sel -N 'h=http://www.w3.org/1999/xhtml' -t -m '//h:div[@class="total"]' -v './text()' -n——尽管与此关闭的重复项与您的要求相符,而不是最佳/稳健实践。 -
您也可以在完全不使用正则表达式或任何外部工具的情况下完成整个工作。
x="$(<file.html)"; x="${x%% offenses detected*}"; x="${x##*[^0-9]}" -
ghoti 你能分解一下你的例子中发生了什么吗?
-
上面使用的语法在wiki.bash-hackers.org/syntax/pe有详细描述,covered in BashFAQ #100也有。
-
感谢您的链接
标签: bash