首页 文章

如何在目录中找到正则表达式的正匹配并返回所需的退出代码?

提问于
浏览
0

如果我的egrep条件计数> 1匹配,我需要返回退出代码1所以我有一个文件: test.txt ,包含下一个内容:

{% url my_view %}
{% url my_view user_id %}
{% url 'my_view' %}
{% url 'my_view' user_id %}
{% url "my_view" user_id %}
{% url "my_view" %}

我有下一个包含egrep的bash脚本:

#!/bin/bash
    if [ "$(grep -c "(% url+ )([0-9a-z_:]+)" test.txt)" -ge 1 ]; then
        echo true 
        exit 1
    else
        echo false 
        exit 0
    fi

因此,如果我的grep表达式有多于1个匹配,则该行假设返回true:

[ "$(grep -c "(% url+ )([0-9a-z_:]+)" test.txt)" -ge 1 ];

但我总是变得虚伪,无所谓 .

这是正则表达式工作的证据:

https://regex101.com/r/zZ9vF5/8#python

那么,如果我的正则表达式有多个匹配项,我需要更改以便检索退出代码1?

2 回答

  • 1

    你正确地说了"egrep condition",但你的脚本中没有 egrep 也没有 grep -E .

    你确定在 l 后需要 + 吗?你期望 urlllll 出现在输入中吗?

    此外, -ge 表示 >= ,使用 gt 来测试 > .

  • 0

    你应该尝试bash算术:

    if (($(grep -c "(% url+ )([0-9a-z_:]+)" file) >= 1)); then ...
    

相关问题