gpt4 book ai didi

regex - 在同一行捕获多个正则表达式模式

转载 作者:太空宇宙 更新时间:2023-11-04 05:18:24 25 4
gpt4 key购买 nike

这就是我想做的。我有一个文件,其中的行以多种方式分隔,并且我想根据这些行中的模式捕获多个子字符串。

因此示例行将如下所示:

servername.domain:2017 08 07.SomeText1.otherIrrelevantStuff;SomeText2.MoreStuff
^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^

换句话说,我想在文件的每一行中捕获“servername”、“2017 08 07”、“SomeText1”和“SomeText2”。

我尝试使用 perl -P 和积极的前向/后向执行此操作,但只有第一个有效。每行的结果也应该打印在一行中(因此通过多个 grep -oP 进行管道传输是 Not Acceptable )。

你会怎么做?

最佳答案

在 awk 中,将所需的正则表达式添加到匹配中:

$ awk '
BEGIN { OFS="," }
{
while(match($0,/servername|2017 08 07|SomeText1|SomeText2/)) {
b=b (b==""?"":OFS)substr($0,RSTART,RLENGTH)
$0=substr($0,RSTART+RLENGTH)
}
print b
}' file
servername,2017 08 07,SomeText1,SomeText2

关于regex - 在同一行捕获多个正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45622092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com