搜索文件中多行正则表达式的匹配项(无pcregrep)

阿德里安市长

问题:

没有pcregrep的情况下,如何在文件中找到多行正则表达式的匹配项?

我需要查找/打印每个事件的位置。

不幸的是,pcregrep不存在,我无权安装它。其他替代方法grep perl sed python等。

要搜索的正则表达式的示例是:

Text\nLine

语境:

脚本在几十个文件中提供了数百MB的结构化文本,但不幸的是,由于某些原因,缺少了几行。我确实需要检查那些行是否缺失,从而搜索上一行和下一行的顺序。

Text
Missing //this line is sometimes missing.
Line

编辑:

可能的输入

example.txt

Text
Missing
Line

Text
Missing
Line

Text
Line

Text
Missing
Line

可能的输出:

example.txt,第10行

一些尝试没有成功:

pcregrep 
    # command not found
apt-get install pcregrep 
    # no permission, no su credentials, distro don't provide pcregrep, outdated sources, customer does not want changes on the serve, etc.
sed -r 's#(Text\nLine)#\1#' ./* 
    # print all lines, not only matches, no indication of file or line, etc.
grep 'Text\nLine' ./* 
    # Does not works on multi-lines
sed -n '/Text/,/Line/{p}' ./* 
    # Not the same regex, does not indicate result lines, etc.
库萨兰达

Unix工具通常是面向行的,因此无法使用标准工具箱在多行输入中应用正则表达式。

sed 可以以一种能够检测到您要查找的行的方式来处理文件,但是我们严格使用单个行上的操作来做到这一点:

$ sed -n '/^Text/{N;/^Text\nLine/=;D;}' file
10

sed脚本Text在行的开头查找字符串找到后,它会将下一行添加到其缓冲区中,并\n在中间插入一行

如果缓冲区现在匹配,^Text\nLine则使用中的=命令输出当前行号sed输出的行号是Line文件中该的行号

请注意,尽管第二个正则表达式似乎在文件中的换行符上匹配,但事实并非如此。它在其内部缓冲区中的换行符上匹配,N当我们从文件中读取下一行时,使用命令将其放在那里

如果要将其应用于多个文件,则可能会在循环中使用它:

for name in pattern; do
    printf 'Processing %s...\n' "$name"
    sed -n '/^Text/{N;/^Text\nLine/=;D;}' "$name"
done

其中pattern是与您感兴趣的文件匹配的普通文件名遍历模式。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

大文件中的正则表达式搜索模式

来自分类Dev

正则表达式可检测不在{}之间的所有内容,然后从匹配项中搜索

来自分类Dev

如何在文件中查找所有正则表达式匹配项

来自分类Dev

Python中的正则表达式-多行匹配

来自分类Dev

正则表达式中多个匹配项的混淆

来自分类Dev

PHP正则表达式/搜索并替换多个文件中的多行字符串

来自分类Dev

在Python中搜索/匹配正则表达式

来自分类Dev

正则表达式匹配多行

来自分类Dev

Bash函数在git存储库中搜索与正则表达式匹配的文件名

来自分类Dev

使用Java读取HDFS中的文件并通过正则表达式匹配多行块

来自分类Dev

正则表达式匹配多行括号中的文本

来自分类Dev

HTML文件中的Python正则表达式匹配

来自分类Dev

python中具有多个匹配项和否定条件的多行正则表达式

来自分类Dev

Vim正则表达式-如何反转匹配多行的正则表达式?

来自分类Dev

MariaDB / Mediawiki中的多行正则表达式匹配

来自分类Dev

在Ansible中的文件中搜索正则表达式

来自分类Dev

pcregrep如何强制返回正则表达式的第一个匹配项

来自分类Dev

正则表达式以匹配CSS文件中的ID?

来自分类Dev

如何使用搜索/替换在Vim中访问正则表达式匹配项?

来自分类Dev

大文件中的正则表达式搜索模式

来自分类Dev

文件中单个匹配项的正则表达式字符串替换

来自分类Dev

使用正则表达式查找不匹配项(多行)

来自分类Dev

正则表达式多行匹配

来自分类Dev

在Bash中查看文件中的所有正则表达式匹配项

来自分类Dev

正则表达式,如何排除匹配中的搜索

来自分类Dev

匹配网址正则表达式中的文件路径

来自分类Dev

正则表达式匹配多行搜索

来自分类Dev

在 Python 中匹配多行正则表达式模式

来自分类Dev

在 xml 文件中搜索的正则表达式

Related 相关文章

  1. 1

    大文件中的正则表达式搜索模式

  2. 2

    正则表达式可检测不在{}之间的所有内容,然后从匹配项中搜索

  3. 3

    如何在文件中查找所有正则表达式匹配项

  4. 4

    Python中的正则表达式-多行匹配

  5. 5

    正则表达式中多个匹配项的混淆

  6. 6

    PHP正则表达式/搜索并替换多个文件中的多行字符串

  7. 7

    在Python中搜索/匹配正则表达式

  8. 8

    正则表达式匹配多行

  9. 9

    Bash函数在git存储库中搜索与正则表达式匹配的文件名

  10. 10

    使用Java读取HDFS中的文件并通过正则表达式匹配多行块

  11. 11

    正则表达式匹配多行括号中的文本

  12. 12

    HTML文件中的Python正则表达式匹配

  13. 13

    python中具有多个匹配项和否定条件的多行正则表达式

  14. 14

    Vim正则表达式-如何反转匹配多行的正则表达式?

  15. 15

    MariaDB / Mediawiki中的多行正则表达式匹配

  16. 16

    在Ansible中的文件中搜索正则表达式

  17. 17

    pcregrep如何强制返回正则表达式的第一个匹配项

  18. 18

    正则表达式以匹配CSS文件中的ID?

  19. 19

    如何使用搜索/替换在Vim中访问正则表达式匹配项?

  20. 20

    大文件中的正则表达式搜索模式

  21. 21

    文件中单个匹配项的正则表达式字符串替换

  22. 22

    使用正则表达式查找不匹配项(多行)

  23. 23

    正则表达式多行匹配

  24. 24

    在Bash中查看文件中的所有正则表达式匹配项

  25. 25

    正则表达式,如何排除匹配中的搜索

  26. 26

    匹配网址正则表达式中的文件路径

  27. 27

    正则表达式匹配多行搜索

  28. 28

    在 Python 中匹配多行正则表达式模式

  29. 29

    在 xml 文件中搜索的正则表达式

热门标签

归档