Regex 在Unix中使用正则表达式查找数字大于40000的行?
所以我认为我需要做的第一件事是使第一个数字大于4。如果发现第一位数字大于4,而数字为五位或更多,则应找到该数字。如果数字为4,则以下数字中必须有一个大于0。我真的在为如何设置这个而挣扎。我不知道我是否拥有所有正确的条件,而且编写正则表达式的技术方面也让我感到困惑。感谢您的帮助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-9][[:Digit:]{4}
[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将其解释为扩展的吗?