2017-01-10 100 views
1

我试着去egrep命令包含只是一个单一的发生系“Hihihihihihihi!”,用任意多的“喜的EGREP结果是当前命令和grabage

这里是我写

egrep "^Hi(hi)*!$" myfile.txt 

但它没有工作。按进入后,命令再次显示:

egrep "^Hi(hi)*myfile.txt" mayflies.txt 

任何人都可以帮我吗?

谢谢!

+0

它是否真的再次显示您的命令,或它显示“egrep”^ Hi(hi)* myfile.txt“myfile.txt'而不是? –

+0

哦对不起。它实际上显示egrep“^你好(hi)* myfile.txt”mayflies.txt我没有注意到它 –

回答

3

外壳被解释!$来代替以前的表彰的最后一个参数。

要禁用这些shell替换,请将双引号更改为单引号。

egrep '^Hi(hi)*!$' myfile.txt 

或者,您可以使用-x开关仅匹配整行,避免了^$人物的需要,从而避免了致命!$参数替换:

egrep -x "Hi(hi)*!" myfile.txt 
+0

你测试过了吗?我的测试显示单引号不足以引用。你需要一个反斜杠。 – MAP

+0

@MAP Yep,在这里工作很好。 'egrep'^嗨(嗨)*!$'myfile.txt' – Kundor

+0

谢谢!它运作良好! –

1

尝试用单引号。我认为$正在被BASH解释的东西,不知道是什么:

egrep '^Hi(hi)*!$' myfile.txt 
+0

你测试过了吗?我的测试显示单引号不足以引用。你需要一个反斜杠。 – MAP

+0

我做到了。它在Ubuntu/BASH上运行良好。 –

+0

谢谢!它工作正常! –

2

你不”吨说什么外壳,但我怀疑你的问题是感叹号(!)是特别的外壳。你需要逃避:

egrep "^Hi(hi)*\!$" myfile.txt 

应该在大多数贝壳中工作,这是真的。

将双引号更改为单引号对于所有shell都不够,感叹号在单引号内仍然是特殊的。我只是在tcsh中测试了所有这些,其他shell会有差异。

+0

谢谢!它工作正常〜 –

相关问题