grep-f:打印图案行号

grep-f:打印图案行号,grep,Grep,我使用的是grep-f patternfile inputfile,我想从模式文件中输出行号。例如,如果patternfile是 abc def 而inputfile是 abcx abcy defx 我想要像这样的东西 1 abcx 1 abcy 2 defx 1 abcx 1 abcy 2 defx 其中1对应于abcx和abcy从模式文件的第1行匹配的事实,2对应于defx从模式文件的第2行匹配的事实。有什么想法吗?单向使用awk。script.awk的内容: FNR == NR {

我使用的是
grep-f patternfile inputfile
,我想从模式文件中输出行号。例如,如果
patternfile

abc
def
inputfile

abcx
abcy
defx
我想要像这样的东西

1 abcx
1 abcy
2 defx
1 abcx
1 abcy
2 defx

其中1对应于abcx和abcy从
模式文件
的第1行匹配的事实,2对应于defx从
模式文件
的第2行匹配的事实。有什么想法吗?

单向使用
awk
script.awk的内容

FNR == NR {
        pattern[ FNR ] = $1;
        next;
}

FNR < NR {
        if ( FNR == 1 ) {
                l = length( pattern );
        }
        for ( i = 1; i <= l; i++ ) {
                if ( $0 ~ pattern[i] ) {
                        printf "%d %s\n", i, $0;
                        break;
                }
        }
}
具有以下输出:

1 abcx
1 abcy
2 defx