我需要一个与关闭的[A-Za-z_0-9]*\.xml
before ERROR
匹配的正则表达式。
以下输入应匹配 match_me.xml
ERROR
应确定。- 应匹配 ERROR 之前的第一个
[A-Za-z_0-9]*\.xml
。 -> match_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
- 当一行与我们的模式匹配时,我们将该行存储在变量
p
中
- 当
p
被设置并且我们遇到ERROR
时,我们打印p
并将其重置为空白。
关于正则表达式 (grep) 向后匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45541300/