grep和egrep选择数字

时间:2013-12-05 06:52:03

标签: linux sed awk grep

我必须找到邮政编码为“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

2 个答案:

答案 0 :(得分:0)

猜这是你的样本names.txt

  

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

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

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

      

    邮政编码中有“22”

    你可以这样做:

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

答案 1 :(得分:0)

如果邮政编码始终是最后一个字段,则可以使用此awk

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