【发布时间】:2016-11-29 21:18:28
【问题描述】:
我想在解析 HTML 页面时从 grep 结果中删除所有 HTML 标签,以便结果是纯文本, 例如,当解析 phpinfo 以仅获取 PHP 版本而不是包含 HTML 标签的整行时:
$curl -i http://piscina.tienda/phpinfo.php | grep 'PHP Version' | head -1
href="http://www.php.ne.... alt="PHP logo" /></a><h1 class="p">PHP Version 5.5.33</h1>
虽然我只想获得“PHP 版本 5.5.33”作为结果。
我尝试了以下 sed 模式:
sed -e 's/<.*>//g'
sed -e 's/^<.*>$//g'
但结果是完整的 HTML 代码或全为空白(所有输出都被替换)。 您能否告诉在这种情况下是否可以使用 sed 仅删除 HTML 标记,或者在这种情况下最好使用其他运算符?还是模式有问题?
提前感谢任何提示!
【问题讨论】:
-
sed -e 's/<\/?[^>]*>//g'? -
问题出在模式上。在这种特殊情况下也很容易,但通常不应该使用正则表达式来解析 html。