don.joey Asked: 2015-01-02 01:40:59 +0800 CST2015-01-02 01:40:59 +0800 CST 2015-01-02 01:40:59 +0800 CST 在 html 文件上使用 grep 时,如何只显示文本而不显示标签? 772 我有一个大型网站。我没有设置本地搜索引擎,而是使用 grep 来搜索站点。Grep 的输出显示了 html(当然),但我只想看到文本(而不是所有的 html 标签)。 我怎样才能做到这一点? grep 2 个回答 Voted Best Answer don.joey 2015-01-02T01:44:04+08:002015-01-02T01:44:04+08:00 我发现的一种解决方案是将 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 编辑流以更改其他元素。 αғsнιη 2015-01-02T02:19:14+08:002015-01-02T02:19:14+08:00 使用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
我发现的一种解决方案是将 grep 的输出通过管道传输到 html2text:
这在很大程度上是可行的,但它无法 a) 保持 grep 的颜色突出显示,b) 使用 unicode,以及 c) 替换某些字符。这是一个没有这些缺点的更完整的替代方案。
当然,您也可以使用 sed 编辑流以更改其他元素。
使用
lynx
命令并通过以下方式安装它:在这里查看输入和输出
使用awk: