【问题标题】:grep and egrep selecting numbersgrep 和 egrep 选择数字
【发布时间】:2013-12-05 06:52:03
【问题描述】:

我必须找到邮政编码中包含“22”的人的所有条目。注意:这不应该包括像 Mike Keneally 这样的街道地址包括“22”的东西。

以下是一些数据示例:

Bianca Jones, 612 Charles Blvd, Louisville, KY 40228
Frank V. Zappa, 6221 Hot Rats Blvd, Los Angeles, CA 90125
George Duke, San Diego, CA 93241
Ruth Underwood, Mariemont, OH 42522

这是我到目前为止的命令,但我不知道为什么它不起作用。

 egrep '.*[A-Z][A-Z]\s*[0-9]+[22][0-9]+$' names.txt

【问题讨论】:

    标签: linux sed awk grep


    【解决方案1】:

    猜这是您的示例 names.txt

    比安卡·琼斯,查尔斯大道 612 号,路易斯维尔,肯塔基州 40228

    Frank V. Zappa, 6221 Hot Rats Blvd, Los Angeles, CA 90125

    乔治杜克,圣地亚哥,加利福尼亚州 93241

    露丝·安德伍德,马里蒙特,俄亥俄州 42522

    egrep '.[A-Z][A-Z]\s[0-9]+[22][0-9]+$' names.txt

    您的代码翻译为匹配任何满足此条件的行:

    1. [A-Z][A-Z] 有两个连续的大写字符
    2. \s* 零个或多个空格字符
    3. [0-9]+ 一个或多个数字字符
    4. [22] 一个字符匹配 2 或 2
    5. [0-9]+$ 行尾一个或多个数字字符

    获得满足您要求的线路:

    邮政编码中有“22”

    你可以这样做:

    egrep '[A-Z]{2}\s+[0-9]*22' names.txt
    

    【讨论】:

      【解决方案2】:

      如果邮政编码总是最后一个字段,你可以使用这个awk

      awk '$NF~/22/' file
      Bianca Jones, 612 Charles Blvd, Louisville, KY 40228
      Ruth Underwood, Mariemont, OH 42522
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-06
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 2014-07-02
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        相关资源
        最近更新 更多