问题标签 [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 投票
5 回答
114 浏览

python - 操纵 txt 搜索三种模式(sed、awk、pcregrep)

我有这个文本文件

我想从这个文件中只提取 txt :

在这种情况下,我只想匹配那个

我尝试使用不同的解决方案

但它会提取 AAAA 和 FF 之间的所有 txet

我该如何解决?

感谢帮助

编辑:

在欧元线和FF之间可能有一些文字。不知道多少行。。

我想提取 AAAA 和 FF 之间的 txt

0 投票
2 回答
276 浏览

python - Python:为对 pcregrep 多行的子进程调用制作匹配模式列表

TLDR:有没有一种干净的方法来为 subprocess.check_output('pcregrep', '-M', '-e', pattern, file) 制作条目列表?

我正在使用 pythonsubprocess.check_output()来调用pcregrep -M. 通常我会通过调用来分隔结果,splitlines()但由于我正在寻找多行模式,所以这不起作用。我很难找到一种干净的方法来创建匹配模式列表,其中列表的每个条目都是一个单独的匹配模式。

这是一个简单的示例文件,我正在 pcgrep'ing

这是(一些)我的python代码

这是输出

如果我能做类似的事情就好了

没有创建垃圾来清理(空白列表条目),甚至没有一个split()独立于模式的分隔符。

有没有一种干净的方法来创建匹配的多行模式列表?

0 投票
1 回答
872 浏览

regex - Pcregrep 包含文件扩展名错误

我正在使用 pcregrep 搜索多行模式,我只希望 pcregrep 搜索具有特定文件扩展名的文件,即

pcregrep -Mrl --include=*.sv -e '<my_multi-line_pattern>' /path/to/search

但是,这会引发错误:pcregrep: Error in 'include' regex at offset 0: nothing to repeat.

我试过转义和双重转义*无济于事。这种语法似乎适用于 grep

grep -rl --include=*.sv '<my_single-line_pattern>' /path/to/search

非常感谢任何帮助或提示。

编辑:示例多行模式:'(?s)^\salu.*\.opa_i(' 应该匹配

0 投票
1 回答
466 浏览

xml - 使用源文件中的数据从 XML 文件中获取块

我修改了这个问题,因为我已经阅读了一些关于 XML 的内容。

我有一个包含 AuthNumbers 列表的文件源文件。 111222 111333 111444 etc.

我需要搜索该列表中的数字并在相应的 XML 文件中找到它们。在 xml 文件中,该行的格式如下: <trpcAuthCode>111222</trpcAuthCode>

这可以使用 grep 轻松实现,但是我需要包含交易的整个块。

该块以: <trans type="network sale" recalled="false"><trans type="network sale" recalled="false" rollback="true">和/或其他一些变体开头。实际上<trans*>,如果这样的事情是可能的,那将是最好的。

该块以</trans>

它不需要优雅或高效。我只需要它工作。我怀疑一些交易正在退出,我需要一种快速的方法来审查那些没有被处理的交易。

如果有帮助,这里是原始(已消毒)xml 的链接 https://www.dropbox.com/s/cftn23tnz8uc9t8/main.xml?dl=0

我想提取的内容: https ://www.dropbox.com/s/b2bl053nom4brkk/transaction_results.xml?dl=0

每个结果的大小会有所不同,因为每笔交易的长度可能会根据购买的产品数量而有很大差异。在结果 xml 中,您会看到我根据 trpcAuthCode 列表 111222、111333、111444 提取了所需的 xml。

0 投票
1 回答
41 浏览

linux - 查找与位于不同行中的模式匹配的文件

我正在做一个程序,它可以找到与用户给出的两种模式(日期和 ID)匹配的文件,这两种模式都位于每个文件内的不同行中。这些文件位于不同的 .zip 子文件夹中。我的代码不起作用,我正在尝试使用 PCRE DOTALL。

文件样本:

我正在使用的代码:

0 投票
1 回答
161 浏览

regex - 正则表达式搜索模式并输出多行直到另一个模式

我有一个日志文件,其中每个日志都遵循一个模式:
Date [FLAG] LogRequestID : Content

每个日志的内容部分可能跨越多行。给定一个 LogRequestID,我需要搜索所有事件,并获取整个日志。我需要使用 perl、awk、sed 或 pcregrep 来完成此操作。

示例输入(注意日志之间没有空行):

2017 年 5 月 24 日 17:00:06,827 [INFO] 123456 (Blah : Blah1) Service-name:: Single line content

2017 年 5 月 24 日 17:00:06,828 [INFO] 567890 (Blah : Blah1) 服务名称:: 内容(可能跨越多行)

2017 年 5 月 24 日 17:00:06,829 [INFO] 123456 (Blah : Blah2) 服务名称:多行内容。打印对象[ ID1=fac-adasd ID2=
123231 ID3=123108 Status=Unknown
Code=530007 Dest=CA
]

2017 年 5 月 24 日 17:00:06,830 [INFO] 123456 (Blah : Blah1) Service-name:: Single line content

2017 年 5 月 24 日 17:00:06,831 [INFO] 567890 (Blah : Blah2) 服务名称:: 内容(可能跨越多行)

给定搜索键 123456 我想提取以下内容:

2017 年 5 月 24 日 17:00:06,827 [INFO] 123456 (Blah : Blah1) Service-name:: Single line content

2017 年 5 月 24 日 17:00:06,829 [INFO] 123456 (Blah : Blah2) 服务名称:多行内容。打印对象[ ID1=fac-adasd ID2=
123231 ID3=123108 Status=Unknown
Code=530007 Dest=CA
]

2017 年 5 月 24 日 17:00:06,830 [INFO] 123456 (Blah : Blah1) Service-name:: Single line content

使用 grep 给了我单行日志,但只给了我多行日志的一部分。

我尝试在搜索模式之后检查几行,使用 awk,并检查是否到达了另一个日志,但它变得低效。我需要某种可以与 pcregrep 或 perl 甚至 awk 一起使用的正则表达式来获取此输出。

请帮帮我,因为我对正则表达式很不好。

0 投票
1 回答
4598 浏览

javascript - 如何使用正则表达式突出显示文本

我正在尝试编写一个脚本来帮助在与正则表达式匹配时突出显示。下面是我现在做的例子。

上面代码的输出是

我想要的输出是

我想知道的是,反正写一个正则表达式包含正则表达式和提供的单词?或者有任何其他方法可以解决这个不正确的替换问题。

0 投票
2 回答
478 浏览

bash - bash 函数中的 pcregrep 无法正常工作

我正在做一个检查配置文件的脚本。为了一次检查多行,我使用了 pcregrep。当我在命令行中使用它时,一切都很好。

当我把它放在一个函数中时,它并没有找到模式。

这是我的功能

echo pcregrep -M "$string" $path 只是一个控件来验证它是否需要pcregrep命令获取好的变量

当我使用函数执行文件时,控制台中有以下内容

  • 有趣的是:当我复制粘贴echo pcregrep -M "$string" $path控制台中显示的结果时,即:

    /li>

它就像一个魅力

更新:实际上我正在尝试解析 CSV 文件中的正则表达式和路径,下面的行是列名和文件内容的示例:

这是读取 CSV 文件的函数,并在第一列中调用一个函数或另一个函数:

我希望它可以帮助解决问题。

我错过了什么??????

提前致谢

0 投票
1 回答
454 浏览

linux - 如何在 pcregrep 中仅显示第一个匹配项?

我在日志文件中有 xml,看起来像:

所以,我需要从日志文件中删除这个 XML,我正在尝试这样做:

但是在这之后我没有得到两个ServiceRs xml,我得到了这个:

我知道,我可以修改模式 - (\n|.)* -> (\n|.){0, n),但我真的不知道 xml 中有多少行。

0 投票
1 回答
37 浏览

regex - 从文本文件中获取特定行到另一个文本文件

我有一个包含很多行的纯文本文件,我试图只获取以|V|和开头的行runtime

我试过的:

没有任何效果。我会得到一个空文件或重复相同的文件。