1

我已经在我的 Windows 7 笔记本电脑上安装了草莓 perl。

grep我想使用或ack在 Windows 上搜索单词列表。我已经能够使用 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
4

1 回答 1

1

所以你说你想找到“娃娃”出现和“房子”出现的所有文件。所以这就是你要做的。

首先,找到所有包含“娃娃”的文件,并打印它们的列表。

ack -l doll

然后在该文件列表中搜索“house”一词。

ack house $(ack -l doll)

或者,如果您没有运行允许您执行此操作的 shell(即 Windows),您可以执行以下操作:

ack -l doll | ack -x house

ack -x说“从标准输入中获取要搜索的文件列表”。

于 2014-04-16T12:40:16.153 回答