我对grep有一个非常基本的困惑。假设我有一个要grep的文件:
test.txt:
This is an article
from some newspaper
Article is good
newspaper is not.现在,如果我使用以下表达式进行grep
grep -P "is\s*g" test.txt我明白你的意思了:
Article is good但是,如果我这样做:
grep -P "is*g" test.txt我什么都看不到。我的问题是,既然asterix (*)是一个通配符,表示前一个字符的0个或更多重复,grep的输出不应该是相同的吗?为什么“s”的零次或多次重复不会给出任何输出?
我在这里错过了什么。谢谢你的帮助!
发布于 2012-01-07 08:40:34
因为您的输入中没有任何内容与i匹配,然后是0或更多重复的s,然后是g。“文章是好的”不匹配,因为它在s之后有一个空格,而不是g。模式is\s*g匹配是因为\s是一种特殊的模式,可以匹配任何类型的空格-所以总体模式是is,然后是任意大小的空格,然后是g,它自然地匹配"is g“。
发布于 2012-01-07 08:40:26
我在你的输入中看不到ig,isg,issg,issssg ...
既然我不知道你想匹配什么,下面是我最好的猜测:
grep -P "is.*g" test.txt发布于 2012-01-07 08:49:51
在使用grep之前,你应该先看看正则表达式,你也会发现它对其他命令很有用……http://www.regular-expressions.info/
https://stackoverflow.com/questions/8766293
复制相似问题