如何在Perl中使用sed(第2部分)?

如何在Perl中使用sed(第2部分)?,perl,sed,Perl,Sed,这是一个类似于此线程的问题 我的问题是:我在csh声明中有一条sed管道,如下所示: set lineNumbers= `grep "textToFind" $fileToProcess | s/.*textToFind //' | sed 's/;.*//'` my @linenumbers; open FH "<$fileToProcess"; while (<FH>) { next if (!m/textToFind/); chomp; s/.*tex

这是一个类似于此线程的问题

我的问题是:我在csh声明中有一条sed管道,如下所示:

set lineNumbers= `grep "textToFind" $fileToProcess | s/.*textToFind //' | sed 's/;.*//'`
my @linenumbers;
open FH "<$fileToProcess";
while (<FH>)
{
   next if (!m/textToFind/);
   chomp;
   s/.*textToFind //, s/;.*//;
   push @lineNumbers, $_;
}    
我希望在不使用s2p模块的情况下解决此问题,例如:

set lineNumbers= `grep "textToFind" $fileToProcess | s/.*textToFind //' | sed 's/;.*//'`
my @linenumbers;
open FH "<$fileToProcess";
while (<FH>)
{
   next if (!m/textToFind/);
   chomp;
   s/.*textToFind //, s/;.*//;
   push @lineNumbers, $_;
}    
my@linenumber;

打开FH“我想你要求的是:

my @linenumbers;
open my $INPUT_FH, '<', $fileToProcess;
while (<$INPUT_FH>)
{
   next if (!m/textToFind/);
   push @lineNumbers, $.;
}
my@linenumber;

打开我的$INPUT\u FH,'你想完成什么?找到textToFind所在文件的行号?我不太确定你在问什么。尽管第二种方法有很多优点,你想知道如何得到第一个示例的结果吗?你的问题是“我如何使用这种方法?”,但您没有指定所指的方法。(被接受的答案所采用的方法使用了
s2p
,您特别排除了它。)我认为您误解了perl的工作原理。默认情况下,模式应用于
$\uuu
<代码>$\u
是(默认情况下)当前行。所以你需要做的就是
s/onething/anotherthing/;s/somethingelse/whatever/;打印美元我假设这种方法“@linenumbers;openfh”Thanx用于样式捕获。虽然我的风格是把我的($var)放在帕兰斯来抵消它…不要。这是个坏习惯。括号可以改变上下文。这可能会产生一些微妙而恶劣的副作用。