从以反斜杠结尾的文件中查找行
To grep lines from file ending with backslash
我有一个名为 FILE 的文件,在某些行的末尾带有反斜杠。喜欢
a
sbajcb
ksajcnx \
cjscnk\
snk
sknds\
当我使用这个命令时 grep -G '\$' FILE
,我得到了结果。
但是当我在 Perl 中执行它时,我没有得到结果。
我的密码是
#! /usr/bin/perl
my $runme=$ARGV[0];
if(-e $runme) {
my $all_lines = `grep -G '\$' $runme`;
print $all_lines;
}
我的代码有什么问题? ,我尝试使用 '\$'
,仍然没有得到结果。
谢谢
Perl 已经去除了一层引号,所以实际执行的命令变成了
grep -G '$' $runme
要解决这个问题,再次将反斜杠加倍,为 $:
留一个
my $all_lines = `grep -G '\\$' $runme`;
当然你可以直接在 perl 中重新实现 grep
:
open my $fh, "<", $runme or die "Cannot open '$runme': $!";
while (<$fh>) {
if (/\$/) {
print $_;
}
}
之后不要忘记关闭 $fh,要么让它超出范围,要么显式 close $fh
.
鉴于您的文件名已经在 @ARGV
中,因此无需 shell out 来实现此目的。在 Perl 中实现它可以节省启动 shell 所需的时间并且是跨平台的。
#!/usr/bin/perl
use strict;
use warnings;
exit unless -e $ARGV[0];
# <> will return records from the files
# named in @ARGV
while (<>) {
print if /\$/;
}
我有一个名为 FILE 的文件,在某些行的末尾带有反斜杠。喜欢
a
sbajcb
ksajcnx \
cjscnk\
snk
sknds\
当我使用这个命令时 grep -G '\$' FILE
,我得到了结果。
但是当我在 Perl 中执行它时,我没有得到结果。
我的密码是
#! /usr/bin/perl
my $runme=$ARGV[0];
if(-e $runme) {
my $all_lines = `grep -G '\$' $runme`;
print $all_lines;
}
我的代码有什么问题? ,我尝试使用 '\$'
,仍然没有得到结果。
谢谢
Perl 已经去除了一层引号,所以实际执行的命令变成了
grep -G '$' $runme
要解决这个问题,再次将反斜杠加倍,为 $:
留一个my $all_lines = `grep -G '\\$' $runme`;
当然你可以直接在 perl 中重新实现 grep
:
open my $fh, "<", $runme or die "Cannot open '$runme': $!";
while (<$fh>) {
if (/\$/) {
print $_;
}
}
之后不要忘记关闭 $fh,要么让它超出范围,要么显式 close $fh
.
鉴于您的文件名已经在 @ARGV
中,因此无需 shell out 来实现此目的。在 Perl 中实现它可以节省启动 shell 所需的时间并且是跨平台的。
#!/usr/bin/perl
use strict;
use warnings;
exit unless -e $ARGV[0];
# <> will return records from the files
# named in @ARGV
while (<>) {
print if /\$/;
}