Regex 使用awk在文件中按顺序匹配模式列表

Regex 使用awk在文件中按顺序匹配模式列表,regex,bash,awk,Regex,Bash,Awk,我希望将换行符分隔的正则表达式列表与另一个文件进行匹配,顺序是(即,在匹配regex2之前必须先匹配regex1),如果所有正则表达式都匹配,则匹配成功。这需要在awk中完成,因为我无法在上述平台上方便地访问python和perl 因此,文件1将包含 address 0x[0-9]* disk [a-zA-Z]:\\ 文件2将包含: asm address 0xfae2222 jubkj disk C:\ aaa 在这种情况下,我希望脚本成功 我知道在匹配模式时可以执行特定的操作,例如'/p

我希望将换行符分隔的正则表达式列表与另一个文件进行匹配,顺序是(即,在匹配regex2之前必须先匹配regex1),如果所有正则表达式都匹配,则匹配成功。这需要在awk中完成,因为我无法在上述平台上方便地访问python和perl

因此,文件1将包含

address 0x[0-9]*
disk [a-zA-Z]:\\
文件2将包含:

asm
address 0xfae2222
jubkj
disk C:\
aaa
在这种情况下,我希望脚本成功

我知道在匹配模式时可以执行特定的操作,例如
'/pattern/{print$0}'
,但我认为没有办法指示两个模式之间的关系。

使用awk

 awk 'NR==FNR&&NF{a[++x]=$0;next}
      FNR==1{current=1}
      $0~a[current]{current<x&&current++||success=1}
      END{if(success)print "success";else print "fail"}' file1 file2
awk'NR==FNR&&NF{a[++x]=$0;next}
FNR==1{current=1}

$0~a[current]{current这可能会验证文件1中的所有模式是否都在文件2中的某个位置,但OP要求(如果我理解正确的话)在文件2中找到的模式与在文件1中出现的模式的顺序相同。@jas哦,是的,我没看到,给我一分钟!整洁!对我有效,希望对asker也是如此。(看起来您在编辑过程中丢失了
文件1
文件2
输入。)是否可以将成功和失败作为程序的错误级别/返回值来获取?@nitzanms将打印更改为退出,然后更改所需的返回代码,例如
如果(成功)退出0;否则退出10