我在我的Windows 7笔记本电脑上安装了strawberry-perl。
我想在Windows上使用grep
或ack
搜索单词列表。
我已经能够使用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
答案 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;中搜索文件列表。