Ack & negative lookahead giving errors

梦想与她 提交于 2019-12-06 22:12:38

问题


I have a problem with using ack-grep with a negative look ahead.

I am running this command:

ack-grep "paypal_responded(?!_at)"

but I am getting the error:

bash: !_at: event not found

I have tried adding backslashes in various places, but I'm also new to using ack & linux, so please treat me as a newbie with any instructions.

Thanks in advance.


回答1:


Try ack-grep 'paypal_responded(?!_at)'

You need single-quote to avoid bash interpret ! as history expand command.




回答2:


The shell is interpreting the ! in your input as a command substitution:

$ ack-grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ !ac
ack-grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ 

You need to tell the shell that ! has no special meaning; there are two ways to do that:

ack-grep "paypal_responded(?\!_at)"

ack-grep "paypal_responded\(?\!_at\)"

or

ack-grep 'paypal_responded(?!_at)'

Single-quoted strings have fewer transformations applied to them:

$ ack-grep "s\!" /etc/passwd
$ ack-grep 's!' /etc/passwd
$ 


来源:https://stackoverflow.com/questions/8385020/ack-negative-lookahead-giving-errors

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!