我正在尝试使用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。我也想将其分配给变量。
我要关闭吗?
答案 0 :(得分:1)
您可以做一个简单的
a=$(grep -oP '(\d+)(?=\soffenses\sdetected)' abc);echo $a
将给出:
28301
-o仅给出该行的匹配部分
-P在正则表达式中使用perl正则表达式
abc是文件名
(\d+)(?=\soffenses\sdetected)
在这种情况下,我们只是使用正向超前来捕获特定数字后面紧跟的要求数字
答案 1 :(得分:0)
如果您具有GNU grep和GNU sed,则可以执行以下操作:
$ cat file | xargs | grep -Po '<div class=total>\K(.*?)</div>' | sed -E 's/<\/div>//; s/, /\n/'
900 files inspected
28301 offenses detected:
如果您有ruby
可用:
$ ruby -e 'puts readlines.join[/(?<=<div class="total">).+(?=<\/div>)/m].gsub(/^[ \t]+/m,"")' file
900 files inspected,
28301 offenses detected: