0

フォルダに大量のテキスト ファイルがあります。フォルダは「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:

4

1 に答える 1

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:\vehiclesperl scriptName.pl >vehicles.txtこの<*.txt>表記は、ディレクトリ内のすべてのテキスト ファイルのリストを返します。これらの各ファイルは、1 行ずつ開かれ、読み取られます。探している単語が行に見つかった場合、それが出力されます。>vehicles.txt表記は、ファイルに出力することを意味します。

于 2013-01-25T03:59:24.810 に答える