使用 perl 作为更好的 grep 来使用单行模式 m/RE/s 匹配多行

2024-06-22

我正在尝试 grep 查找表达式之间的文本(例如BEGIN and END) 可能与以下内容不在同一行:

perl -wln -e 'm/BEGIN.+END/s and print;' < file.txt

请注意,由于s修饰符(在m/RE/s), "."允许匹配换行符(以及其他任何内容)。

这使得模式可以将特定顺序的单词与它们之间的任何内容进行匹配(即模式BEGIN图案在一行上END位于下面几行)。 如果两个模式位于同一行,则效果很好,但当它跨越多行时则不行。我在这里缺少什么?


事实上我确实找到了缺失的部分!我需要使用-0777选项可以搜索记录中的整个文件并使用打印匹配的表达式print $&反而:

perl -wln -0777 -e 'm/BEGIN.+END/s and print $&;' < file.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 perl 作为更好的 grep 来使用单行模式 m/RE/s 匹配多行 的相关文章

  • sed:用匹配的模式替换第 n 个单词?

    我有一个具有以下特征的文本文件 每行至少有三个由空格分隔的 单词 单词 可以是任何字符或字符串 我在一些行中附加了一些注释 并提出了对原始单词进行更改的初步建议 现在想使用 sed 为我进行这些更改 因此 为了提供更清晰的图片 我的文件如下
  • 用于提取 FDF 数据的 PHP 正则表达式代码

    我正在尝试使用 PHP 和正则表达式解析 FDF 文件 但我就是无法理解正则表达式 我一直在解析文件以生成数组 FDF 1 2 1 0 obj lt lt FDF lt lt Fields lt lt V email protected c
  • 为什么没有调用回调?

    我有来自的示例脚本B OP检查 https metacpan org pod B OPCheck SYNOPSIS模块经过修改PL op name to padsv https github com Perl perl5 blob blea
  • 如何验证电子邮件地址与网站域名是否匹配?

    我的表单上有 2 个输入字段 电子邮件和网站 如何使用 JQuery 验证电子邮件地址域必须与网站域匹配 例如 如果网站是http example com http example com或带 www 或不带 http 或不带http ww
  • “read”和“sysread”有什么区别?

    read http perldoc perl org functions read html and sysread http perldoc perl org functions sysread html有非常相似的文档 两者有何区别 A
  • 在R中提取其他两个字符串之间的字符串

    我试图找到一种简单的方法来提取出现在两个已知子字符串之间的未知子字符串 可以是任何内容 例如 我有一个字符串 a lt anything goes here STR1 GET ME STR2 anything goes here 我需要提取
  • 如何仅替换多个文件中记事本++中的第一个文本实例?

    我正在努力更新一个网站并进行一些更改 并且我已经成功使用标准查找和替换搜索对多个文件进行了大部分更改 我的 f r 中只留下一个错误需要修复 但它在整个文档中出现了几次 我只想替换第一个实例 这是唯一一次错误 div class boxb
  • 忽略正则表达式匹配的嵌套括号内的逗号

    我有以下正则表达式 s s g这允许我匹配由逗号分隔的元素 同时忽略内部的逗号 有这个 a b c aaa bbb ccc d 我明白了 a b c aaa bbb ccc d 现在 我想升级它以考虑另一个级别的括号 我不想考虑任何级别 我
  • Perl 中令人困惑的文件句柄

    一直在使用以下脚本 但仍然无法理解两种不同 类型 的文件句柄形式背后的含义 任何见解将不胜感激 usr bin perl use warnings use strict open FH example txt or die while
  • 为什么 "asdf".replace(/.*/g, "x") == "xx" ?

    我偶然发现了一个令人惊讶的 对我来说 事实 console log asdf replace g x Why two替代品 似乎任何没有换行符的非空字符串都会产生此模式的两个替换 使用替换函数 我可以看到第一个替换是整个字符串 第二个替换是
  • 使正则表达式以惰性方式匹配,同时跳过一些单词

    我想要正则表达式 其中包括跳过一些单词以惰性方式匹配 例如 正则表达式 all s S 0 10 s Damages amount s S 0 10 s in s excess s of 示例文本 第 8 1 a 条规定的所有此类损害超出免
  • 使用正则表达式匹配阿拉伯文文本

    我试图使用正则表达式仅匹配阿拉伯语文本 但出现异常 这是我的代码 txt matches P Arabic 这是例外情况 线程 main 中的异常 java util regex PatternSyntaxException 索引 9 附近
  • 为什么会出现使用警告;使用严格; Perl 中不是默认的吗?

    我想知道为什么 use warnings use strict Perl 中不是默认的 每个脚本都需要它们 如果有人 出于充分的理由 需要禁用它们 他们应该使用no strict和 或应该使用一些命令行参数 对于单行代码 是否有太多写得很糟
  • 如何在使用 Apache 2 的 Windows 上忽略 Perl shebang?

    我已经在我的 Windows 机器上设置了本地 Perl Web 环境 我正在开发的应用程序最初来自 Linux 服务器 因此源代码的 shebang pl文件看起来像这样 usr bin perl 这会导致我的 Windows 开发机器上
  • Android 中 EditText 的 InputFilter 的正则表达式帮助

    我需要实现一个输入过滤器来限制格式中的数字输入1234 35 也就是说 之前最多有四个 和两位小数 我正在用这个正则表达式 http en wikipedia org wiki Regular expression图案 Pattern co
  • Android正则表达式-返回匹配的字符串

    在我的 Android 项目中 我有一个正则表达式和一个字符串 其中应该有匹配的表达式 问题是我只找到了一个matches 方法 返回布尔值 有没有什么东西 只返回匹配的字符串 例如 如果我的字符串是 中午 12 点去商店 我想检查该字符串
  • gitk中正则表达式的格式是什么?

    我正在尝试使用 gitk 中的 find 添加 删除字符串 正则表达式选项 我尝试过的语法不起作用 并且我找不到描述它接受的正则表达式语法的文档 我正在尝试匹配两者Modem Wakup and Modem UnWakeup 两者都不Mod
  • 在 C# 中查找字符串中指定字符串的所有索引

    您好 我正在尝试使用以下解决方案 在 C 中查找字符串中的所有模式索引 https stackoverflow com questions 10546302 find all pattern indexes in string in c s
  • 正则表达式将 BBCode 分成几部分

    我有这个 str some html code img img some html code img img 我想得到这个 img img img img 请不要使用 BBCode 它是evil 当开发人员开始使用 BBCode 时 懒得正
  • 如何覆盖 Template Toolkit 模板文件中的 WRAPPER?

    有没有办法禁用WRAPPER那是设置在新的 配置 http search cpan org dist Template Toolkit lib Template pm 通过模板或临时覆盖parse 我想要一个默认值WRAPPER 我将用于

随机推荐