用于复制行以放置在新文件中的Perl脚本

用于复制行以放置在新文件中的Perl脚本,perl,grep,Perl,Grep,我的文件夹里有很多文本文件。文件夹为“c:\vehicles”。对于每个文本文件,我希望复制包含以下文字的任何行:model、make、year。我要写入的文件是“vehicles.txt”,位于“c:\”中 我知道我把代码写错了。我应该怎么做来纠正它?谢谢你的帮助 C:\vehicles$ls-A | xargs head-qn 30 | perl-Mstrict-wne'if($+|=~/(make)|(model)|(year)/){print“$|”}>vehicles.txt grep

我的文件夹里有很多文本文件。文件夹为“c:\vehicles”。对于每个文本文件,我希望复制包含以下文字的任何行:model、make、year。我要写入的文件是“vehicles.txt”,位于“c:\”中

我知道我把代码写错了。我应该怎么做来纠正它?谢谢你的帮助

C:\vehicles$ls-A | xargs head-qn 30 | perl-Mstrict-wne'if($+|=~/(make)|(model)|(year)/){print“$|”}>vehicles.txt

grep-rE“(make | model | year)”c:

也许以下几点会有所帮助:

use strict;
use warnings;

for my $file (<*.txt>) {
    open my $fh, '<', $file or die $!;

    while (<$fh>) {
        chomp;
        print "$_\n" if /(?:\b(?:model|make|year)\b)/i;
    }
    close $fh;
}
使用严格;
使用警告;
对于我的$file(){

打开我的$fh,'vehicles.txt
表示要打印到该文件。

您在目录中看到名为
vehicles.txt
的文件了吗?单独匹配公共前导
m
似乎毫无意义,使代码可读性大大降低。