2011-06-14 69 views
2

我想用行號grep一個單詞。使用命令grep -n或使用sed命令很容易。 Perl中是否有任何等價物?我檢查了grep函數,但是我無法找到任何需要的東西。Perl中「grep -n」的等效含義是什麼?

+0

我想這裏是你需要:http://stackoverflow.com/questions/1849329/is-there-a-perl-shortcut-to-count-the-number-of-matches-in-a-string – 2011-06-14 08:18:42

+0

不,匹配數量與比賽的線數不同。 – 2011-06-14 08:39:19

回答

12

在一個名爲mygrep文件:

#!/usr/bin/perl 

use strict; 
use warnings; 

my $match = shift; 

while (<>) { 
    if (/\Q$match/) { 
    print "$. : $_"; 
    } 
} 
命令行

然後:

$ ./mygrep if mygrep 
6 : my $match = shift; 
9 : if (/\Q$match/) { 

應該足以讓你開始。

+0

嘿,這很好!但是,多個文件中的多個匹配怎麼樣...像'grep -n「word」*'還是'xargs'等。我需要在'ls'之後爲每個文件編寫一個循環嗎? – 2011-06-14 09:17:56

+0

就像我說的,這足以讓你開始:-)如果你閱讀$的文檔,我認爲你的其他問題將得到解答。 (perldoc perlvar)。 – 2011-06-14 10:06:11

+3

似乎有點過分,將其作爲腳本編寫。你可以輕鬆地做到這一點:perl -wne'print'$:$ _「if m/\ Qmatch /' – 2011-06-14 14:05:28