在 html 文件上使用 grep 时,如何仅显示文本而不显示标签?

在 html 文件上使用 grep 时,如何仅显示文本而不显示标签?

我有一个大型网站。我没有设置本地搜索引擎,而是使用 grep 来搜索网站。Grep 的输出显示 html(当然),但我只想查看文本(而不是所有 html 标签)。

我怎样才能做到这一点?

答案1

我发现的一个解决方案是将 grep 的输出通过管道传输到 html2text:

sudo apt-get install html2text
grep "som* interesting" | html2text

这在很大程度上是可行的,但它无法实现以下功能:a) 保留 grep 的颜色突出显示;b) 使用 unicode;c) 替换某些字符。这里有一个更完整的替代方案,没有这些缺点。

grep --color=always "test*" * | html2text -utf8 | sed 's/l&rsquo/\"/'

当然,您也可以使用 sed 编辑流来更改其他元素。

答案2

使用lynx命令并按照以下步骤安装:

sudo apt-get install lynx-cur

在此处查看输入和输出

$ lynx --dump infile.html | grep 'PATTERN'
HTML Tables

   HTML tables start with a table tag.

   Table rows start with a tr tag.

   Table data start with a td tag.
     __________________________________________________________________

1 Column:

   100
     __________________________________________________________________

1 Row and 3 Columns:

   100 200 300
     __________________________________________________________________

3 Rows and 3 Columns:

   100 200 300
   400 500 600
   700 800 900
     __________________________________________________________________

使用

awk '{gsub(/<[^>]*>/,"")} /PATTERN/{# what you want to do }' infile

相关内容