2012-08-15 52 views
1

我正在使用grep -f patternfile inputfile,我想从图案文件中输出行号。例如,如果patternfilegrep -f:印刷图案行号

abc 
def 

inputfile

abcx 
abcy 
defx 

我想是这样

1 abcx 
1 abcy 
2 defx 

,其中1对应于ABCX和abcy的事实是,从1号线的匹配patternfile,以及2对应于defx与patternfile的第2行匹配的事实。有任何想法吗?

回答

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