【问题标题】:What is the equivalent of “grep -n” in Perl?Perl 中“grep -n”的等价物是什么?
【发布时间】:2011-09-14 12:12:35
【问题描述】:

我想用行号 grep 一个单词。使用命令grep -nsed 在shell 中很容易实现。 Perl 中是否有任何等价物?我已经检查了grep 函数,但是我找不到任何我需要的东西。

【问题讨论】:

标签: perl


【解决方案1】:

在名为 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/) {

应该足以让您入门。

【讨论】:

  • 嘿,这很好!但是多个文件中的多个匹配项呢...例如grep -n "word" *xargs 等。我是否需要在ls 之后为每个文件编写一个循环?
  • 就像我说的,这足以让您入门 :-) 如果您阅读 $ 的文档,我认为您的其他问题将得到解答。 (在 perldoc perlvar 中)。
  • 把它写成脚本似乎有点过分。你可以很容易地做到这一点: perl -wne 'print "$.: $_" if m/\Qmatch/'
  • @William Pursell - 是的,但@davorg 写了一些东西,让刚学习 Perl 的人受益。
  • @William Pursell:当然,但是程序版本更容易更改,以添加 mandy 要求的其他花里胡哨。
猜你喜欢
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 2011-03-25
  • 2023-04-04
  • 2012-09-06
  • 2018-07-11
  • 1970-01-01
相关资源
最近更新 更多