在 perl 中找到关键字后打印行
print lines after finding a key word in perl
我有一个变量 $string,我想在行中找到关键字后打印所有行(包括带有关键字的行)
$string=~ /apple /;
我正在使用这个正则表达式来查找关键字,但我不知道如何在这个关键字之后打印行。
如果您的数据是标量变量,我们可以使用几种方法
推荐方法
($matching) = $string=~ /([^\n]*apple.+)/s;
print "$matching\n";
还有另一种方法
$string=~ /[^\n]*apple.+/s;
print $&; #it will print the data which is match.
如果您从文件中读取数据,请尝试以下操作
while (<$fh>)
{
if(/apple/)
{
print <$fh>;
}
}
或者试试下面的衬垫
perl -ne 'print <> and exit if(/apple/);' file.txt
只保留一个标志变量,当你看到字符串时将其设置为真,如果标志为真则打印。
perl -ne 'print if $seen ||= /apple/'
不太清楚您的数据来自何处。假设它是一个包含换行符的字符串。让我们先把它拆分成一个数组。
my @string = split /\n/, $string;
然后我们可以使用触发器运算符来决定打印哪些行。我正在使用 [=12=]
作为不太可能匹配任何字符串的正则表达式(因此,实际上,它总是错误的)。
for (@string) {
say if /apple / .. /[=11=]/;
}
我有一个变量 $string,我想在行中找到关键字后打印所有行(包括带有关键字的行)
$string=~ /apple /;
我正在使用这个正则表达式来查找关键字,但我不知道如何在这个关键字之后打印行。
如果您的数据是标量变量,我们可以使用几种方法
推荐方法
($matching) = $string=~ /([^\n]*apple.+)/s;
print "$matching\n";
还有另一种方法
$string=~ /[^\n]*apple.+/s;
print $&; #it will print the data which is match.
如果您从文件中读取数据,请尝试以下操作
while (<$fh>)
{
if(/apple/)
{
print <$fh>;
}
}
或者试试下面的衬垫
perl -ne 'print <> and exit if(/apple/);' file.txt
只保留一个标志变量,当你看到字符串时将其设置为真,如果标志为真则打印。
perl -ne 'print if $seen ||= /apple/'
不太清楚您的数据来自何处。假设它是一个包含换行符的字符串。让我们先把它拆分成一个数组。
my @string = split /\n/, $string;
然后我们可以使用触发器运算符来决定打印哪些行。我正在使用 [=12=]
作为不太可能匹配任何字符串的正则表达式(因此,实际上,它总是错误的)。
for (@string) {
say if /apple / .. /[=11=]/;
}