grep 匹配直到第一次出现某个字符

grep 匹配直到第一次出现某个字符

我正在尝试<span class="c7">从下面

<span class="c7"></span>

我在尝试:

$ echo '<span class="c7"></span>'| grep -o "<span.*[^>]>"
<span class="c7"></span>

我得到了上面的结果。那么如何才能得到<span class="c7">

答案1

echo '<span class="c7"></span>'| grep -o "<span[^>]*>"

您的.*是贪婪的,它匹配了第一个>及之后的。我的[^>]*也是贪婪的,但它无法匹配任何包含的内容>,因此>模式中的>肯定会匹配输入中第一次出现的。

相关内容