Answers:
您可以安装pcregrep
(在大多数发行版存储库中可用)-使用pcre库的 grep ,该库执行“ Perl兼容正则表达式”。它具有一个命令行选项-M
,使您可以从手册页进行多行搜索:
“任何一场比赛的输出可能包含多于一行。”
所以你可以做
pcregrep -M 'my\s+ice\s+tea' filename
的\s
是空白,将匹配\n
和\r
在多模式中,除了正常的空格字符。您还可以直接匹配换行符,因此您可以
pcregrep -M 'pattern1_\n_pattern2' filename
grep -E
这样做PCRE模式?
?
,+
,{
,|
,(
,和)
作为,而不必拥有自己平时的正则表达式的含义\
在前面,当你做,如果你使用标准的grep。所以grep 'hello\s\+world' file
等于grep -E 'hello\s+world' file
。它不执行PCRE。有grep -P
perl正则表达式,但是它是实验性的(根据手册页),我认为它与pcregrep有点不同...
-P
什么时候说-E
,但是我没有意识到这是不同的。
我可能会使用vim
的:vimgrep
命令进行搜索。它的工作方式与之类似,grep
但支持vim RE和路径。
基本上,您可以执行类似:vimgrep 'pattern1\npattern2' path/**
的递归搜索,然后键入:copen
以弹出一个包含匹配列表的较小窗口。
vim
RE几乎可以完成PCRE所能做的一切,但是它们与perl正则表达式谱系是分开发展的,因此大多数高级东西的工作方式都不同。它们的基本功能更像基本RE,但它们具有PCRE无法提供的一些漂亮功能。
我不确定是否可以:vimgrep
像grep
这样吐出数据。我只曾尝试将其用于中的导航vim
。
:help vimgrep
从内部vim
获取更多信息;:help pattern.txt
有关可vim
再生能源的信息;有关路径的更多信息,请参见:help wildcards
。
.vimrc
吗?它应该比grep
操作系统更具可移植性:vim
没有“ POSIX风格”,甚至在Windows下也几乎相同。................................................... ....................................可以添加限定符以确保在RE上使用例如正确数量的“魔术”。据我了解,有一个严格的不成文规则,不能单独保留该选项。
find.exe
而不是grep
)。在过去的几周内还有另一个问题。
:vimgrep
还是:grep
?来自:help grep
:“内部grep [ie :vimgrep
] 的优点是它可以在所有系统上运行,并使用强大的Vim搜索模式。”