我试图去除只包含一次" Hihihihihihihi!"以及任意多次' hi
的的行。这是我写的
egrep "^Hi(hi)*!$" myfile.txt
但它没有用。按输入后,再次显示该命令:
egrep "^Hi(hi)*myfile.txt" mayflies.txt
任何人都可以帮助我?
谢谢!
答案 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