Regex 以r开头,以g结尾的白鹭线
我需要在shell中使用以r开头,以g结尾的egrep查找和显示行 我有Regex 以r开头,以g结尾的白鹭线,regex,shell,unix,grep,Regex,Shell,Unix,Grep,我需要在shell中使用以r开头,以g结尾的egrep查找和显示行 我有 egrep -e "^r*g$" testfile.txt 但是它没有给我任何结果,我做错了什么?添加应该可以 egrep -e "^r.*g$" 它的基本意思是:一切以r开头,然后是零或更多的东西,然后以g结尾 经受考验 r fsgdfs gfsdg fooo bar rfoo g fdsqfdsq rg 它回来了 r fsgdfs gfsdg rfoo g rg *在r上匹配,而不是“中间的任何内容”。将其更
egrep -e "^r*g$" testfile.txt
但是它没有给我任何结果,我做错了什么?添加
应该可以
egrep -e "^r.*g$"
它的基本意思是:一切以r开头,然后是零或更多的东西,然后以g结尾
经受考验
r fsgdfs gfsdg
fooo bar
rfoo g
fdsqfdsq
rg
它回来了
r fsgdfs gfsdg
rfoo g
rg
*
在r
上匹配,而不是“中间的任何内容”。将其更新为*
,您将看到结果:
egrep -e "^r.*g$" testfile.txt
虽然您可以在双引号字符串的末尾放置一个
$
,但最好使用单引号来写:'^r.*g$'
您将正则表达式与shell使用的文件匹配模式(“globbing”)混淆了。在regexp中,
匹配单个字符,*
匹配零个或多个字符;在文件匹配模式中,它是?
和*
,并且
并不特殊。文件匹配模式功能不太强大,但由于选择文件的目的有限,因此往往更方便。