grep 命令在 perl 中不显示任何输出
grep command not showing any output in perl
我有一个数组@files,其中有多个.txt 文件。我试图从这些文件中的行的开头 grep 所有具有模式“/home/[a-z]+”的行。我正在尝试以下方法:
my @lines = grep (/^\/home\/[a-z]+/, @files);
chomp(@lines);
my @line = uniq(@lines);
但是当我尝试打印@lines 时我没有在输出中得到任何东西。
谁能告诉我我在 grep 命令中做错了什么。谢谢
请参阅以下代码示例,它演示了您选择的方法。
如果您提供内容 @files
数组的示例,将会非常有帮助。
注意:不需要使用 uniq(@lines)
,因为文件系统在其组织中采用唯一文件名
use strict;
use warnings;
use feature 'say';
my @files = <DATA>;
my @lines = grep( m!^/home/[a-z]+/!, @files);
say @lines;
__DATA__
/home/alex/work/samples
/home/philip/doc/asterix
/home/maria/bin/quick_search.c
/bin/grep
/sbin/test
输出
/home/alex/work/samples
/home/philip/doc/asterix
/home/maria/bin/quick_search.c
用于过滤存储在数组中的文件列表的匹配模式的示例代码 @files
。
use strict;
use warnings;
use feature 'say';
my @files = qw/abc.txt, bcd.txt, cde.txt/;
my @lines;
for my $file (@files) {
my @temp;
open my $fh, '<', $file
or die "Couldn't open $file";
@temp = grep( m!^/home/[a-z]+/!, <$fh>);
close $fh;
@lines = (@lines, @temp);
}
chomp(@lines);
say for @lines;
我有一个数组@files,其中有多个.txt 文件。我试图从这些文件中的行的开头 grep 所有具有模式“/home/[a-z]+”的行。我正在尝试以下方法:
my @lines = grep (/^\/home\/[a-z]+/, @files);
chomp(@lines);
my @line = uniq(@lines);
但是当我尝试打印@lines 时我没有在输出中得到任何东西。
谁能告诉我我在 grep 命令中做错了什么。谢谢
请参阅以下代码示例,它演示了您选择的方法。
如果您提供内容 @files
数组的示例,将会非常有帮助。
注意:不需要使用 uniq(@lines)
,因为文件系统在其组织中采用唯一文件名
use strict;
use warnings;
use feature 'say';
my @files = <DATA>;
my @lines = grep( m!^/home/[a-z]+/!, @files);
say @lines;
__DATA__
/home/alex/work/samples
/home/philip/doc/asterix
/home/maria/bin/quick_search.c
/bin/grep
/sbin/test
输出
/home/alex/work/samples
/home/philip/doc/asterix
/home/maria/bin/quick_search.c
用于过滤存储在数组中的文件列表的匹配模式的示例代码 @files
。
use strict;
use warnings;
use feature 'say';
my @files = qw/abc.txt, bcd.txt, cde.txt/;
my @lines;
for my $file (@files) {
my @temp;
open my $fh, '<', $file
or die "Couldn't open $file";
@temp = grep( m!^/home/[a-z]+/!, <$fh>);
close $fh;
@lines = (@lines, @temp);
}
chomp(@lines);
say for @lines;