我试图用awk将两个不同的正则表达式与长字符串匹配,在35个字符的窗口中删除匹配的字符串部分。 问题是,当我寻找第一个(在beginnng上匹配)而第二个(字符串的结尾)不匹配时,同一堆代码也可以工作。 输入:
Regexp1(1)(2)(3)(4)(5)xxxxxxxxxxxxxxx(20)(21)(22)(23)Regexp2
所需的输出
(1)(2)(3)(4)(5)xxxxxxxxxxxxxxx(20)(21)(22)(23)
到目前为止,我使用的这段代码可以正确提取Regexp1,但是不幸的是,由于Regexp2的RSTART和RLENGTH索引不正确,因此无法提取Regexp2。 提取Regexp1的代码(正确的输出):
awk -v F="Regexp1" '{if (match(substr($1,1,35),F)) print substr($1,RSTART,RLENGTH)}' file
用于提取Regexp2的代码(错误的输出)
awk -v F="Regexp2" '{if (match(substr($1,length($1)-35,F)) print substr($1,RLENGTH)}' file
尽管Regexp1的索引正确,但Regexp2的索引却是错误的(RSTART = 13)。我不知道如何提取第二个正则表达式。