Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 以r开头,以g结尾的白鹭线_Regex_Shell_Unix_Grep - Fatal编程技术网

Regex 以r开头,以g结尾的白鹭线

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上匹配,而不是“中间的任何内容”。将其更

我需要在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

虽然您可以在双引号字符串的末尾放置一个
$
,但最好使用单引号来写:
'^r.*g$'
您将正则表达式与shell使用的文件匹配模式(“globbing”)混淆了。在regexp中,
匹配单个字符,
*
匹配零个或多个字符;在文件匹配模式中,它是
*
,并且
并不特殊。文件匹配模式功能不太强大,但由于选择文件的目的有限,因此往往更方便。