如何提取两个模式之间的所有文本(包括模式出现的行上的文本)?

Joe*_*sma 1 text-processing

在 Bash 上下文中,我想提取不同行上出现的两个模式之间的所有文本,但并不构成整行。因此,我特别想在模式出现的行上打印文本,但在开始模式之后开始,在停止模式之前结束。

Cyr*_*rus 6

使用 GNU grep、Lookbehind(?<=This )和 Lookahead (?= 3)

grep -Poz '(?<=This )(.|\n)*(?= 3)' file
Run Code Online (Sandbox Code Playgroud)

输出:

是1号线
其他的东西
线

请参阅:man grepStack Overflow 正则表达式常见问题解答

  • +1。也许启用“(?s)”点抹茶本身也“\n”?我已经测试过并且它也有效。 (2认同)