问题标签 [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.
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 行。
shell - shell - 如何匹配xml标签之间的内容?
我有这个文件:
我想匹配 和 之间的<Content>
文本</Content>
。我试过了:
但它不起作用。请注意,我使用ash
shell 而不是bash
. 我该怎么做呢 ?
regex - pcregrep:如何只匹配第一次出现?
我有很多格式如下的文件:
我想在文件夹中的所有文件中匹配以下文本块$FOAM_TUTORIALS/incompressible
:
当我使用pcregrep
如下:
它也与其他行匹配(请参阅下面的评论):
您能否告诉我如何修改正则表达式以仅匹配第一个块?
regex - 使用 pcregrep grep 多行
我有一个具有以下模式的文件。
我只想匹配以“Foo”开头并具有“是”的“部分”。(您会注意到每个部分的末尾都有一个空的换行符)
预期的输出应该是。
我试过了
pcregrep -M "^Foo(.|\n)*^Yes"
但不幸的是,这从前一部分开始匹配,并将倒数第二部分与具有“是”作为返回匹配的部分混为一谈,所以我没有得到一个以“Foo”开头并具有“是”的部分,但是与以前一样多的以“Foo”开头的部分
我的困境是,如果在本节末尾我看不到“是”,但我匹配了“Foo”,如何丢弃上一个匹配项。
我尝试使用lookbehind 函数,但它不能用于可变长度。
regex - 如何使用 REGEX 匹配另一个模式之前的最后一次出现的模式
我有一个巨大的 XML 文件,我需要提取包含一系列数字的整个标签的内容。文件中的所有内容都是一行,我在此处添加了换行符以使其更具可读性
所以这里我有一个简化的例子
文件:
我想匹配包含序列 0007537181 的 IDOC BEGIN 标签。所以它会是
到目前为止,我得到了这个正则表达式:
这导致从第一个具有相同名称的标签的开头到我想要的所有内容:
我设法通过将其发送到第二个正则表达式来解决此问题,该正则表达式获取 IDOC BEGIN 的最后一次出现
总结一下,我需要得到数字序列之前的最后一个IDOC BEGIN
请记住,原始文件没有换行符,所有内容都在一行中。
bash - 带有特定文本的多行 grep
有一个xml文件,<A_tag>
里面有很多-s。
我需要查看那些至少有一个<C_tag>
.
所以这个块应该匹配(因此包含在结果中):
我尝试使用 pcregrep,但我不知道如何判断任何大于 1 个字符的块结尾(并且</A_tag>
比这更长,但例如[^>]
regexp 对我来说也很容易)。
我也尝试过 awk,但也无法用它来管理目标。
如果有经验的人可以帮助我,请让您的命令也用空行分隔找到的块,这样我可以了解更多信息。
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 行注释中的数字。我不知道如何匹配一个而不是另一个。
regex - pcregrep 或 grep:使用前瞻搜索不起作用
我正在尝试搜索具有前瞻性的正则表达式,它在 pcregrep 或 grep 中不起作用
我想搜索一些部分
- 可能跨越多行,
- 在行首以 PQXY 开头,并且
- 在行尾以 OFEJ 结尾,并且
- 两者之间不包含 PQXY 或 OFEJ
一般我在崇高的文本查找中使用以下内容并且效果很好
现在我想找到这种情况的计数,所以我尝试使用 grep 或 pcergrep,两者都不起作用。
和 grep
我怎样才能做到这一点
答案基于@paxdiablo 和@anubha。
主要错误是@paxdiablo 解决的单引号
正则表达式解决方案是基于@anubha 添加 (?s)。当然\n
也可以代替(\R|\z)
regex - pcregrep 如何强制返回正则表达式的第一个匹配项
我有 ci-pipelines 并且有很多before_scripts
部分。我想做一个多行正则表达式。我将所有之前的脚本导出到my-ci-jobs.txt
python 脚本。
这很好用,但有时在 before 脚本中有更多的行,所以我想制作常规来捕获 before_script 和第一个匹配之间的所有内容],
。但是当我实现它时,它会捕捉到最长的匹配。这是我的命令(我不会在这里传递结果,它是整个文件直到最后一个],
):
如何使正则表达式匹配第一个匹配项?有没有更好的方法来做一个多行正则表达式?
unix - Pcregrep 复制匹配的多行模式?
我有一个包含 2 行样本 DNA 序列的文本文件,使用pcregrep
,我想找到匹配“CCC”的模式,尤其是跨越多行的模式 (参见 test.txt 中第 1 行的结尾到第 2 行的开头下面)。
测试.txt:
使用命令:
回报:
它似乎正确地突出显示了第 1 行中的 2 个 C,但是,它突出显示了第 2 行中的第一个 C,然后继续完全打印出第二行;给我一份C的副本。
我在这里做错了什么,如何避免在第 2 行中重复“C”?