正则表达式向后查找字符串和另一个字符串的首次出现之间的所有文本

曲轴

我需要在“错误:”之前找到最新出现的“ GET”(GET zzzz),并捕获其间的所有文本。

GET xxxxx
GET yyyyy
GET zzzzz
Some text
more text
error: this is an error

能做到吗?

编辑

谢谢,awk解决方案有效,但是可以通过最后一次出现“错误:”来进一步改善这一点吗?

GET xxxxx
GET yyyyy
GET zzzzz
Some text
more text
error: this is the first error

GET xxxxx
GET yyyyy
GET zzzzz
Some text
more text
error: this is the last error
mklement0

请尝试以下awk解决方案:

awk '
  /^GET/ { delete lines; c=0; inBlock=1 }
  /^error:/ { for(i=1; i<=c; ++i) print lines[i]; print; exit }
  inBlock { lines[++c] = $0 }
' file

假定仅必须打印1个块,并且error:还应打印行。(更新:请参见下面的解决方案,该解决方案仅打印最后一个块)。

  • /^GET/ { delete lines; c=0; inBlock=1 }lines每当GET在行的开头遇到字符串时,就开始在变量中建立一个行数组
  • /^error:/ { for(i=1; i<=c; ++i) print lines[i]; print; exit }error:在行的开头匹配字符串,并打印出到目前为止建立的所有行,然后显示当前行,然后退出。
  • inBlock { lines[++c] = $0 }将以最新行开头的每一行添加GET到数组中。

根据OP的要求更新

要报告(仅)以结尾最后一个error:,请使用以下命令:

awk '
  /^GET/ { delete lines; c=0; inBlock=1 }
  inBlock { lines[++c] = $0 }
  /^error:/ { inBlock=0; }
  END { for(i=1; i<=c; ++i) print lines[i] }
' file

这与第一个解决方案的不同之处在于,后面的块仅替换了先前的块,因此最后一个块“获胜”,然后END在Awk脚本块中处理完所有输入后将其打印出来

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式以查找多行字符串,其中包括行之间的另一个字符串

来自分类Dev

正则表达式以查找多行字符串,其中包括行之间的另一个字符串

来自分类Dev

正则表达式:如果原始字符串匹配某个过滤器,如何替换另一个字符串中所有出现的字符串

来自分类Dev

正则表达式从一个字符串到另一个字符串

来自分类Dev

查找一些字符串并使用notepad ++正则表达式替换另一个字符串

来自分类Dev

正则表达式-查找行中的字符串,但替换同一行中的另一个字符串

来自分类Dev

两个可能包含另一个字符串的字符串之间的正则表达式匹配

来自分类Dev

在另一个字符串中查找 JSON 字符串的正则表达式

来自分类Dev

正则表达式匹配另一个字符串之后出现的字符串

来自分类Dev

使用正则表达式和 C# 识别另一个字符串中不存在的字符串

来自分类Dev

正则表达式匹配行与字符串 AND 没有另一个字符串

来自分类Dev

正则表达式以匹配2个字符串并包含另一个字符串

来自分类Dev

正则表达式以匹配多个字符串之一,然后是另一个字符串

来自分类Dev

如何使用正则表达式从另一个字符串的开头删除多个字符串

来自分类Dev

使用NSPredicate或正则表达式检查一个大字符串是否包含另一个字符串

来自分类Dev

创建正则表达式以仅在包含一个字符串而排除另一个字符串的情况下查找整个单词

来自分类Dev

如何停止在正则表达式中另一个字符串之前是否出现一个字符串

来自分类Dev

Bash-查找正则表达式并将其替换为另一个字符串

来自分类Dev

上次出现的字符和另一个字符之间的正则表达式匹配

来自分类Dev

使用另一个字符串中的部分正则表达式和部分非正则表达式搜索文本进行搜索

来自分类Dev

正则表达式捕获字符串,直到遇到另一个字符串

来自分类Dev

PHP 中的正则表达式:从另一个字符串中检索特定字符串

来自分类Dev

正则表达式查找字符串中的第一个字母

来自分类Dev

正则表达式查找字符串中的第一个字母

来自分类Dev

正则表达式字符串拆分优先考虑一个字符而不是另一个

来自分类Dev

检查一个字符串是否包含另一个字符串的全部或3个连续字符?正则表达式python不区分大小写

来自分类Dev

一个正则表达式,用于搜索包含一个字符串但不包含另一个字符串的行

来自分类Dev

正则表达式多个元素一个字符串

来自分类Dev

如果文本仅包含一个字符串,则匹配文本的正则表达式

Related 相关文章

  1. 1

    正则表达式以查找多行字符串,其中包括行之间的另一个字符串

  2. 2

    正则表达式以查找多行字符串,其中包括行之间的另一个字符串

  3. 3

    正则表达式:如果原始字符串匹配某个过滤器,如何替换另一个字符串中所有出现的字符串

  4. 4

    正则表达式从一个字符串到另一个字符串

  5. 5

    查找一些字符串并使用notepad ++正则表达式替换另一个字符串

  6. 6

    正则表达式-查找行中的字符串,但替换同一行中的另一个字符串

  7. 7

    两个可能包含另一个字符串的字符串之间的正则表达式匹配

  8. 8

    在另一个字符串中查找 JSON 字符串的正则表达式

  9. 9

    正则表达式匹配另一个字符串之后出现的字符串

  10. 10

    使用正则表达式和 C# 识别另一个字符串中不存在的字符串

  11. 11

    正则表达式匹配行与字符串 AND 没有另一个字符串

  12. 12

    正则表达式以匹配2个字符串并包含另一个字符串

  13. 13

    正则表达式以匹配多个字符串之一,然后是另一个字符串

  14. 14

    如何使用正则表达式从另一个字符串的开头删除多个字符串

  15. 15

    使用NSPredicate或正则表达式检查一个大字符串是否包含另一个字符串

  16. 16

    创建正则表达式以仅在包含一个字符串而排除另一个字符串的情况下查找整个单词

  17. 17

    如何停止在正则表达式中另一个字符串之前是否出现一个字符串

  18. 18

    Bash-查找正则表达式并将其替换为另一个字符串

  19. 19

    上次出现的字符和另一个字符之间的正则表达式匹配

  20. 20

    使用另一个字符串中的部分正则表达式和部分非正则表达式搜索文本进行搜索

  21. 21

    正则表达式捕获字符串,直到遇到另一个字符串

  22. 22

    PHP 中的正则表达式:从另一个字符串中检索特定字符串

  23. 23

    正则表达式查找字符串中的第一个字母

  24. 24

    正则表达式查找字符串中的第一个字母

  25. 25

    正则表达式字符串拆分优先考虑一个字符而不是另一个

  26. 26

    检查一个字符串是否包含另一个字符串的全部或3个连续字符?正则表达式python不区分大小写

  27. 27

    一个正则表达式,用于搜索包含一个字符串但不包含另一个字符串的行

  28. 28

    正则表达式多个元素一个字符串

  29. 29

    如果文本仅包含一个字符串,则匹配文本的正则表达式

热门标签

归档