如何使用awk/sed/perl提取字符串的多个部分?

izkcnapc  于 2022-09-21  发布在  Perl
关注(0)|答案(0)|浏览(85)

我使用egrep搜索有错误的日志文件,它输出了一堆文件。我想要做的是操纵这些弦,以一种不同的方式呈现。

/abcd/efgh/ijkl/logs/fac_unet_abp99507.log.20220708111219.26476752.0
/abcd/efgh/ijkl/logs/fac_oxf_abp3506.log.20220708111219.26476752.0
/abcd/efgh/ijkl/logs/cirrus_abp4296EI_20220824.log
/abcd/efgh/ijkl/mcr/logs/prof_cmcr_abp4296MR.log.20220824150526.15728964.0

输出应如下所示:

ABP99507,UNET
ABP3506,OXF
ABP4296EI,CIRRUS
ABP4296MR,CMCR

我尝试了awksed,但想不出一种方法。我希望能够使它成为动态的,并通过正则表达式来实现。

到目前为止,我所尝试的是:

egrep -li "^error" /abcd/efgh/ijkl/logs/*202207* | awk '/unet|cirrus|oxf|csp|cmcd|cmcr|nice/ {print}'
egrep -li "^error" /abcd/efgh/ijkl/logs/*202207* | sed -n "s/.*(cirrus|unet|cmcr|csp|cmcd|oxf|nice)(abp[0-9]*[A-ZA-Za-za-z]*).*/1,2/p"

SED不起作用,因为"|"操作符被视为文本;我没有使用GNU版本。即使是逃脱也行不通。而且,我似乎不能利用捕获组。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题