-4

old.txt次のような名前のパイプ区切りファイルがあります。

Data1|Data2|Data3|Data4|Data5 
Data1|Data2|Data3|Data4|Data5
Data1|Data2|Data3|Data4|Data5

その内容を という名前の新しいファイルにコピーする必要がありますnew.txtが、2 番目の列は削除されています。

Data1|Data3|Data4|Data5
Data1|Data3|Data4|Data5
Data1|Data3|Data4|Data5

どうすればいいですか?

4

2 に答える 2

3

を使用する場合、これは簡単Text::CSVです。サンプル スクリプトを次に示します。

use strict;
use warnings;
use Text::CSV;

my $csv = Text::CSV->new({
        binary   => 1,
        eol      => $/,
        sep_char => "|",
    });
open my $in, "<", "old.txt" or die $!;

while (my $row = $csv->getline($in)) {
    splice @$row, 1, 1;                 # remove 2nd column
    $csv->print(*STDOUT, $row);         # print the rest
}

出力:

Data1|Data3|Data4|Data5
Data1|Data3|Data4|Data5
Data1|Data3|Data4|Data5
于 2013-07-07T18:15:01.393 に答える
2

これはかなり簡単なはずです。

#!/usr/bin/perl

use warnings;
use strict;

use autodie;

open my $old_fh, "<", "old.txt";
open my $new_fh, ">", "new.txt";

while(my $line = <$old_fh>) {
    # @data should have a more meaningful name
    my @data = split /\|/, $line; 

    # remove the second element in the array. 
    splice @data, 1, 1;
    print $new_fh join ' | ', @data;
}

close $old_fh;
close $new_fh;
于 2013-07-07T17:59:21.070 に答える