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

时间:2015-08-09 05:20:42

标签: regex unix grep

所以我认为我需要做的第一件事是让第一个数字大于4.如果发现第一个数字大于4且数字是五位数或更多,那么应找到该数字。如果数字为4,则后面的一个数字必须大于0.我真的在努力设置它。我不知道我是否拥有所有正确的条件,编写正则表达式的技术方面也使我感到困惑。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

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

>>> a =  "‘Winnie The Pooh’"
>>> a
'\xe2\x80\x98Winnie The Pooh\xe2\x80\x99'

答案 1 :(得分:-1)

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

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

答案 2 :(得分:-1)

如果或等于大于40000,请使用

 egrep '[4-9][[:digit:]]{4}|[[:digit:]]{6,}' file

注意额外的括号。 [:digit:]相当于dgit:中的五个字符之一 请进一步注意,如果存在零填充数字,{6,}部分也会匹配小于40000的值,例如012345

如果你不想要第二个grep来删除40000,那么正如400多个正则表达式变得丑陋而且我推荐的是glenn jackman的解决方案。