grep获取<div>内容</div>

时间:2013-08-31 23:14:17

标签: bash grep

假设我有一个文件 t1.txt

<div class="content"> main </div> <div class="data"> 100 </div>

如果我跑

grep -o "content.*</div>" t1.txt

它会返回

content"> main </div> <div class="data"> 100 </div>

我如何通过第一次遇到</div>来查看文本?我想要

content"> main </div>

谢谢!

2 个答案:

答案 0 :(得分:2)

由于*是贪婪的,因此在第一个</div>与单个grep匹配之前匹配并不容易。您可以使用Perl延迟量词*?

perl -lane '{print $1 if m!(content.*?</div>)!}' input

您也可以稍微修改grep表达式,但灵活性会降低:

grep -o 'content">[^>]*</div>' input

答案 1 :(得分:2)

使用懒人匹配:

grep -P -o 'content.*?</div>' t1.txt

您需要使用-P标志来使用perl语法,因为默认情况下grep不支持延迟匹配。

编辑说明:使用正则表达式解析HTML在大多数情况下并不是一个好主意。