我知道如何使用sed
带grep
,但在Perl中下面的失败.如何sed
在Perl程序中工作?
chomp (my @lineNumbers=`grep -n "textToFind" $fileToProcess | sed -n 's/^\([0-9]*\)[:].*/\1/p'`)
Jason Cohen.. 25
建议:使用Perl正则表达式和替换而不是grep或sed.
它的语法基本相同,但功能更强大.最后,它比调用额外的sed进程更有效.
建议:使用Perl正则表达式和替换而不是grep或sed.
它的语法基本相同,但功能更强大.最后,它比调用额外的sed进程更有效.
你需要用grep或sed做的任何事情都可以更容易地在perl中本地完成.例如(这大致是正确的,但可能是错误的):
my @linenumbers; open FH "<$fileToProcess"; while () { next if (!m/textToFind/); chomp; s/^\([0-9]*\)[:].*/\1/; push @lineNumbers, $_; }
我很惊讶没有人提到s2p实用程序,它将sed"脚本"(你知道,大多数时候是oneliners)转换为有效的perl.(而且awk也有一个a2p工具......)