Regex 在Unix中使用正则表达式查找数字大于40000的行?

Regex 在Unix中使用正则表达式查找数字大于40000的行?,regex,unix,grep,Regex,Unix,Grep,所以我认为我需要做的第一件事是使第一个数字大于4。如果发现第一位数字大于4,而数字为五位或更多,则应找到该数字。如果数字为4,则以下数字中必须有一个大于0。我真的在为如何设置这个而挣扎。我不知道我是否拥有所有正确的条件,而且编写正则表达式的技术方面也让我感到困惑。感谢您的帮助 5位数字-正则表达式[4-9][[:Digit:]{4} 6个或更多数字-正则表达式[1-9][[:digit:]{5,}-检查第一个数字是否为零 把它放在一起 [4-9][[:digit:]]{4}|[1-9][[:di

所以我认为我需要做的第一件事是使第一个数字大于4。如果发现第一位数字大于4,而数字为五位或更多,则应找到该数字。如果数字为4,则以下数字中必须有一个大于0。我真的在为如何设置这个而挣扎。我不知道我是否拥有所有正确的条件,而且编写正则表达式的技术方面也让我感到困惑。感谢您的帮助

  • 5位数字-正则表达式
    [4-9][[:Digit:]{4}
  • 6个或更多数字-正则表达式
    [1-9][[:digit:]{5,}
    -检查第一个数字是否为零 把它放在一起

    [4-9][[:digit:]]{4}|[1-9][[:digit:]]{5,}
    

    为什么要使用正则表达式?迭代每行中的单词,并将单词与数字40000进行比较

    awk '{
        for (i = 1; i <= NF; i++) 
            if ($i > 40000) {
                print
                break
            }
    }' file
    
    awk'{
    对于(i=1;i 40000){
    打印
    打破
    }
    }"档案"
    
    如果大于或等于40000,请使用

     egrep '[4-9][[:digit:]]{4}|[[:digit:]]{6,}' file
    
    注意额外的括号
    [:digit:
    相当于
    dgit:
    进一步注意,
    {6,}
    部分也将匹配小于40000的值,如果有零填充数字,例如
    012345


    对于大于40000的情况,如果您不希望第二次grep仅删除40000,则正则表达式会变得丑陋,我建议使用glenn jackman的解决方案。

    当我在终端中运行此命令时,它会显示未找到命令。知道为什么吗?这是正则表达式。使用
    grep'[4-9][:digit:{4}|[:digit:{6,}'…
    。阅读手册页此匹配
    42 igitGitt(使用egrep)。测试建议:-)从矿井中切下的粘贴jobe很好,但有轻微的修正。(summat在突出显示时出错:-(@EdHeal-One-person的轻微更正是另一个人的两个严重错误已修复。范围中的字符类需要额外的括号和带有
    |
    的替代项,并使用
    {n,}计数。)
    是扩展正则表达式,它不适用于standare grep,只适用于egrep。一个简单的
    echo 40001 | grep…
    就足以证明它不起作用。我相信这是我们应该从答案中得到的最低质量保证和尽职调查。特别是如果附有阅读手册页的建议。取决于grep的版本。@EdHeal做到了吗?我见过的所有grep手册页和POSIX都要求grep使用
    -E
    选项来理解扩展正则表达式。你能说出一个特定的操作系统,普通grep将其解释为扩展的吗?