Ack搜索文字字符串[关闭]


15

当我要搜索html标签的一部分时,我厌倦了不得不转义的事情。

如何在转义的情况下确认输入的内容准确?

例如

ack-grep 'console.log(foo'

我得到:

Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/

使用其他外壳?用引号括起来吗?将您的搜索字符串放在文件中,我怀疑ack-grep可以从文件中获取字符串。也许您甚至可以通过stdin进行搜索。
Zoredache

@Zoredache我添加了一个更好的示例..我不想逃脱(..更好的外壳是什么意思?
测试人员

我的意思是,您抱怨的所有问题都是由您的shell处理的(bash / zsh /无论如何)。问题与该工具无关。问题在于外壳程序没有发送您键入的内容。
Zoredache'3

嗯,我认为我找到了.. -Q使用它字面上..
测试

Answers:


18

您必须转义正则表达式。

ack 'console\.log\(foo'

(您应转义.以免与“ consoleflog” .匹配,因为匹配任何单个字符)

而且,如果您不想这样做,请执行此操作以自动引用每个元字符。

ack -Q 'console.log(foo'

2
\ Q在我的服务器上不起作用。 ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
塞巴斯蒂安2014年

我把\Q例子弄错了,并从答案中删除了它。谢谢,@Sébastien。
安迪·莱斯特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.