2014-03-07 27 views
1

我在我的windows 7笔记本电脑上安装了strawberry-perl。将列表传递给ack的语法是什么?

我想在窗口上使用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

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

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

ack -l doll 

然后搜索单词“house”的文件列表。

ack house $(ack -l doll) 

或者,如果你不运行的外壳,可以让你做到这一点(如Windows),你可以这样做:

ack -l doll | ack -x house 

ack -x说:“拿文件的列表,从标准输入搜索”。

+1

谢谢您花时间回复。希望我仍然可以在桌面上安装此设置。 – abhi

相关问题