我有一个大型网站。我没有设置本地搜索引擎,而是使用 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:
awk '{gsub(/<[^>]*>/,"")} /PATTERN/{# what you want to do }' infile