问题标签 [pcregrep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
29 浏览

linux - 仅当所有模式在同一订单上匹配时才提取多行

我遇到了这里问的类似困难。

我的 Linux 日志文件(示例日志文件)包含以下条目,我想 grep 行 '<code>Total Action Failed :' 和 '<code>Total Action Processed:' 仅当这两行后跟包含字符串 ' > Processing file: R' 的行。

尝试使用pcregrep前面问题中给出的解决方案,如下所示:

我有以下两个问题:

(1) 上面的命令返回模式行之间存在的所有行——这不是必需的

(2) 如果日志文件包含以下 ( > Processing file: Z) 而不是 ( > Processing file: R) 的条目,则上述 pcregrep 命令不会给出准确的结果。

有人可以帮我找到解决这个问题的方法吗?

当所有模式以相同的顺序匹配时,我只需要如下三行;此外,第一个模式> Processing file: R和第二个模式之间的行数Total Action Failed :不同,并不总是 3 行。

0 投票
1 回答
32 浏览

shell - shell - 如何匹配xml标签之间的内容?

我有这个文件:

我想匹配 和 之间的<Content>文本</Content>。我试过了:

但它不起作用。请注意,我使用ashshell 而不是bash. 我该怎么做呢 ?

0 投票
1 回答
136 浏览

regex - pcregrep:如何只匹配第一次出现?

我有很多格式如下的文件:

我想在文件夹中的所有文件中匹配以下文本块$FOAM_TUTORIALS/incompressible

当我使用pcregrep如下:

它也与其他行匹配(请参阅下面的评论):

您能否告诉我如何修改正则表达式以仅匹配第一个块?

0 投票
3 回答
536 浏览

regex - 使用 pcregrep grep 多行

我有一个具有以下模式的文件。

我只想匹配以“Foo”开头并具有“是”的“部分”。(您会注意到每个部分的末尾都有一个空的换行符)

预期的输出应该是。

我试过了

pcregrep -M "^Foo(.|\n)*^Yes"

但不幸的是,这从前一部分开始匹配,并将倒数第二部分与具有“是”作为返回匹配的部分混为一谈,所以我没有得到一个以“Foo”开头并具有“是”的部分,但是与以前一样多的以“Foo”开头的部分

我的困境是,如果在本节末尾我看不到“是”,但我匹配了“Foo”,如何丢弃上一个匹配项。

我尝试使用lookbehind 函数,但它不能用于可变长度。

0 投票
1 回答
130 浏览

regex - 如何使用 REGEX 匹配另一个模式之前的最后一次出现的模式

我有一个巨大的 XML 文件,我需要提取包含一系列数字的整个标签的内容。文件中的所有内容都是一行,我在此处添加了换行符以使其更具可读性

所以这里我有一个简化的例子

文件:

我想匹配包含序列 0007537181 的 IDOC BEGIN 标签。所以它会是

到目前为止,我得到了这个正则表达式:

这导致从第一个具有相同名称的标签的开头到我想要的所有内容:

我设法通过将其发送到第二个正则表达式来解决此问题,该正则表达式获取 IDOC BEGIN 的最后一次出现

总结一下,我需要得到数字序列之前的最后一个IDOC BEGIN

请记住,原始文件没有换行符,所有内容都在一行中。

0 投票
3 回答
80 浏览

bash - 带有特定文本的多行 grep

有一个xml文件,<A_tag>里面有很多-s。

我需要查看那些至少有一个<C_tag>.

所以这个块应该匹配(因此包含在结果中):

我尝试使用 pcregrep,但我不知道如何判断任何大于 1 个字符的块结尾(并且</A_tag>比这更长,但例如[^>]regexp 对我来说也很容易)。

我也尝试过 awk,但也无法用它来管理目标。

如果有经验的人可以帮助我,请让您的命令也用空行分隔找到的块,这样我可以了解更多信息。

0 投票
1 回答
38 浏览

regex - 匹配不在括号内的浮点数

我正在尝试用 grep 匹配一堆文件中的模式。这些文件包含 G 代码(CNC 机器代码)。每个数字都应该有一个与之关联的字母(例如:X4.5、G71、Z-0.75)。许多文件有拼写错误并且缺少字母。我正在尝试使用 grep 通过匹配文件中没有紧跟字母的任何十进制数字来识别这些文件。但是,如果模式出现在括号内,我不想匹配相同的模式。括号中的任何内容都是注释,不应与正则表达式匹配。

测试文本:

第 3 行在技术上包含我正在寻找的模式,但我不想匹配它,因为它在括号内。

第 4、6、7 行是我尝试匹配的模式的示例。数字前面没有字母,也没有括号内。

我已经在 regextester.com 上呆了一个多小时,现在我头疼。也许更熟悉正则表达式的人可以提供帮助。

我能想到的最好的模式是([[:space:]]|^)-?[[:digit:]]*\.[[:digit:]]+([[:space:]]|$). 这与我想要的 4、6 和 7 匹配。但也匹配第 3 行注释中的数字。我不知道如何匹配一个而不是另一个。

0 投票
2 回答
180 浏览

regex - pcregrep 或 grep:使用前瞻搜索不起作用

我正在尝试搜索具有前瞻性的正则表达式,它在 pcregrep 或 grep 中不起作用

我想搜索一些部分

  • 可能跨越多行,
  • 在行首以 PQXY 开头,并且
  • 在行尾以 OFEJ 结尾,并且
  • 两者之间不包含 PQXY 或 OFEJ

一般我在崇高的文本查找中使用以下内容并且效果很好

现在我想找到这种情况的计数,所以我尝试使用 grep 或 pcergrep,两者都不起作用。

和 grep

我怎样才能做到这一点

答案基于@paxdiablo 和@anubha。

主要错误是@paxdiablo 解决的单引号

正则表达式解决方案是基于@anubha 添加 (?s)。当然\n也可以代替(\R|\z)

0 投票
1 回答
95 浏览

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

我有 ci-pipelines 并且有很多before_scripts部分。我想做一个多行正则表达式。我将所有之前的脚本导出到my-ci-jobs.txtpython 脚本。

这很好用,但有时在 before 脚本中有更多的行,所以我想制作常规来捕获 before_script 和第一个匹配之间的所有内容],。但是当我实现它时,它会捕捉到最长的匹配。这是我的命令(我不会在这里传递结果,它是整个文件直到最后一个],):

如何使正则表达式匹配第一个匹配项?有没有更好的方法来做一个多行正则表达式?

0 投票
1 回答
39 浏览

unix - Pcregrep 复制匹配的多行模式?

我有一个包含 2 行样本 DNA 序列的文本文件,使用pcregrep,我想找到匹配“CCC”的模式,尤其是跨越多行的模式 (参见 test.txt 中第 1 行的结尾到第 2 行的开头下面)

测试.txt:

使用命令:

回报:

它似乎正确地突出显示了第 1 行中的 2 个 C,但是,它突出显示了第 2 行中的第一个 C,然后继续完全打印出第二行;给我一份C的副本。

我在这里做错了什么,如何避免在第 2 行中重复“C”?