mat*_*ath 14 grep regex newlines
如何在多行中搜索短语?例如,让短语“我的冰茶”,然后它可以包含在文本文件中:
as js skdfh dfh djh sf my
ice tea.
Run Code Online (Sandbox Code Playgroud)
grep 不会匹配,因为中间有换行符。我如何匹配这些?另一种多行模式是pattern1_\n_pattern2
我知道我做 ATM 的最简单的方法是只对一部分进行 grep,例如用 -A2 -B2 标志加冰,然后在该输出中再次输入例如茶。但这非常乏味。所以我对你如何解决这个问题很感兴趣。
Ham*_*ner 17
您可以安装pcregrep(在大多数发行版存储库中可用) - 这是使用pcre 库的grep ,它执行“Perl 兼容正则表达式”。它有一个命令行选项-M,允许您进行多行搜索 - 从手册页:
“任何一场比赛的输出都可能包含不止一行。”
所以你可以这样做
pcregrep -M 'my\s+ice\s+tea' filename
Run Code Online (Sandbox Code Playgroud)
的\s是空白,将匹配\n和\r在多模式中,除了正常的空格字符。你也可以直接匹配换行符,所以你可以这样做
pcregrep -M 'pattern1_\n_pattern2' filename
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36591 次 |
| 最近记录: |