在 Bash 上下文中,我想提取不同行上出现的两个模式之间的所有文本,但并不构成整行。因此,我特别想在模式出现的行上打印文本,但在开始模式之后开始,在停止模式之前结束。
This is line 1
Something else
Line 3
Run Code Online (Sandbox Code Playgroud)
This
和3
is line 1
Something else
Line
Run Code Online (Sandbox Code Playgroud)
使用 GNU grep
、Lookbehind(?<=This )
和 Lookahead (?= 3)
:
grep -Poz '(?<=This )(.|\n)*(?= 3)' file
Run Code Online (Sandbox Code Playgroud)
输出:
是1号线 其他的东西 线
请参阅:man grep
和Stack Overflow 正则表达式常见问题解答