您好我有一个名为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
答案 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)。