将列表传递给ack的语法是什么?

时间:2014-03-07 14:42:47

标签: ack strawberry-perl chocolatey

我在我的Windows 7笔记本电脑上安装了strawberry-perl。

我想在Windows上使用grepack搜索单词列表。 我已经能够使用ack执行基本搜索,但我只是不知道如何将单词列表传递给ack所以我想将一个单词列表传递给ack并找出这些单词的行号话语出现了。两个单词不必出现在同一行上。

例如,如果我正在搜索“玩偶”和“房子”,我可以在第12行玩具娃娃,在第244行玩房子。

我尝试了类似ack "doll"|"house"的内容,但它会引发以下错误。

Expressions are only allowed as the first element of a pipeline.
At line:1 char:22
+ ack "doll" | "house" <<<<
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline

1 个答案:

答案 0 :(得分:1)

所以你说你想找到所有的文件&#34; doll&#34;出现在哪里&#34; house&#34;出现。所以,这就是你做的事情。

首先,查找包含&#34; doll&#34;的所有文件,并打印它们的列表。

ack -l doll

然后搜索单词&#34; house&#34;。

的文件列表
ack house $(ack -l doll)

或者,如果你没有运行允许你这样做的shell(即Windows),你可以这样做:

ack -l doll | ack -x house

ack -x说&#34;从STDIN&#34;中搜索文件列表。