我正在使用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
。有任何想法吗?
我正在使用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
。有任何想法吗?
一种使用方式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