Egrep结果是当前命令和grabage

时间:2017-01-10 03:03:33

标签: linux grep

我试图去除只包含一次" Hihihihihihihi!"以及任意多次' hi

的行。

这是我写的

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

但它没有用。按输入后,再次显示该命令:

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

任何人都可以帮助我?

谢谢!

3 个答案:

答案 0 :(得分:3)

shell正在解释!$以替换上一个推荐的最后一个参数。

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

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

或者,您可以使用-x开关仅匹配整行,从而无需使用^$字符,从而避免致命的!$参数替代:

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

答案 1 :(得分:2)

你没有说什么shell,但我怀疑你遇到的问题是感叹号(!)对于shell来说是特别的。你需要逃避:

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

应该在大多数炮弹中都有效。

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

答案 2 :(得分:1)

用单引号试试。我认为美元被BASH解释为某种东西,不确定是什么:

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