cat或grep一个html文件以查找特定文本

时间:2018-09-02 22:00:12

标签: bash

我正在尝试使用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。我也想将其分配给变量。

我要关闭吗?

2 个答案:

答案 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: