你如何使用Perl的sed?

Ale*_*ong 8 perl sed

我知道如何使用sedgrep,但在Perl中下面的失败.如何sed在Perl程序中工作?

chomp (my @lineNumbers=`grep -n "textToFind" $fileToProcess | sed -n 's/^\([0-9]*\)[:].*/\1/p'`)
Run Code Online (Sandbox Code Playgroud)

Jas*_*hen 25

建议:使用Perl正则表达式和替换而不是grep或sed.

它的语法基本相同,但功能更强大.最后,它比调用额外的sed进程更有效.

  • 也许是个人品味,但是一些示例代码会很漂亮. (3认同)

Pau*_*lin 14

你需要用grep或sed做的任何事情都可以更容易地在perl中本地完成.例如(这大致是正确的,但可能是错误的):

my @linenumbers;
open FH "<$fileToProcess";
while (<FH>)
{
   next if (!m/textToFind/);
   chomp;
   s/^\([0-9]*\)[:].*/\1/;
   push @lineNumbers, $_;
}
Run Code Online (Sandbox Code Playgroud)

  • 我已经看到它建议你在Perl中使用$ 1而不是\ 1.它应该有更好的性能或类似的东西. (2认同)
  • @ekerner - 我在写 Perl 时比在说话时更发誓。 (2认同)

Zso*_*kai 8

我很惊讶没有人提到s2p实用程序,它将sed"脚本"(你知道,大多数时候是oneliners)转换为有效的perl.(而且awk也有一个a2p工具......)