假设我有一个文件 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>
谢谢!
答案 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在大多数情况下并不是一个好主意。