1

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

abc
def

并且inputfile

abcx
abcy
defx

我想要类似的东西

1 abcx
1 abcy
2 defx

其中 1 对应于 abcx 和 abcy 从 的第 1 行匹配patternfile的事实,2 对应于 defx 从 的第 2 行匹配的事实patternfile。有任何想法吗?

4

1 回答 1

0

一种使用方式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;
                }
        }
}

像这样运行它:

awk -f script.awk patternfile inputfile

具有以下输出:

1 abcx
1 abcy
2 defx
于 2012-08-15T09:02:17.007 回答