正则表达式 (grep) 向后匹配

标签 regex linux grep

我需要一个与关闭的[A-Za-z_0-9]*\.xml before ERROR匹配的正则表达式。

以下输入应匹配 ma​​tch_me.xml

  1. ERROR 应确定。
  2. 应匹配 ERROR 之前的第一个 [A-Za-z_0-9]*\.xml。 -> ma​​tch_me.xml

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo

match_not_me.xml

dolores et ea rebum.

match_me.xml

Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna

ERROR

aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

最佳答案

您可以为此使用 awk:

awk 'p && /ERROR/{print p; p==""} /^[A-Za-z_0-9]*\.xml$/{p=$0}' file

match_me.xml
  1. 当一行与我们的模式匹配时,我们将该行存储在变量 p
  2. p 被设置并且我们遇到 ERROR 时,我们打印 p 并将其重置为空白。

关于正则表达式 (grep) 向后匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45541300/

相关文章:

c# - 正则表达式捕获

regex - 使用 RegEx : Switch order of various number formats (e. g 0-9 OR 0-9a-z OR 0-9-0-9a-z) 进行街道和号码格式设置,后跟文本

regex - 使用 grep 查找两个字符串中的任何一个而不更改行的顺序?

bash - 您如何通过 grep 将输入管道传输到另一个实用程序?

grep 特定文件列表

regex - 过滤掉 Chrome 开发工具中的控制台消息

javascript - 正则表达式将项目提取为多维数组

puttygen 中使用 linux ssh key 返回错误

linux - 使用 AWK 从两个文件中减去 n 列

linux - SSH x 通过脚本转发/屏蔽