寻找一条线的壳

时间:2017-05-02 17:20:46

标签: regex grep

您好我有一个名为myfile.txt的简单文件,其中只有3行:

   192.168.20.30
   text123
   192.168.1.1

我正在尝试以数字形式grep所有IP.number.1我尝试使用此正则表达式

grep [0-9]*\.[0-9]*\.[1] myfile.txt

但它打印出3行,任何想法为什么,它应该只打印192.168.1.1

1 个答案:

答案 0 :(得分:0)

如果没有单引号,shell会从模式中删除反斜杠,它看起来像[0-9]*.[0-9]*.[1],它匹配0+位,然后是任何字符,再次是0+位,再次是任何字符,然后是1

您必须使用引号:

grep '[0-9]*\.[0-9]*\.1' myfile.txt

请参阅online demo。您可能会看到echo [0-9]*\.[0-9]*\.[1]打印[0-9]*.[0-9]*.[1]echo '[0-9]*\.[0-9]*\.1'打印[0-9]*\.[0-9]*\.1

请注意,您可以将-E选项与grep一起使用,并使用+量词( 1或更多次出现次数):grep -E '[0-9]+\.[0-9]+\.1'(至少,使用GNU grep)。