Perl脚本将行复制到新文件中

时间:2013-01-25 03:40:23

标签: 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 -rE "(make|model|year)" c:

1 个答案:

答案 0 :(得分:2)

也许以下内容会有所帮助:

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;
}

假设脚本位于c:\vehicles,请在命令提示符下键入perl scriptName.pl >vehicles.txt<*.txt>表示法返回目录中所有文本文件的列表。这些文件中的每一个都是逐行打开和读取的。如果在一条线上找到您要查找的任何单词,则会打印出来。 >vehicles.txt表示法表示打印到文件。