-5

数直線を使用してファイルを小さなファイルに分割できる perl プログラムの作成方法についてアドバイスが必要です。

例えば:

perl split.pl --file="data.txt" --numberLine=2

入力

データ.txt:

line1
line2
line3
line4

出力

data1.txt

line1
line2

data2.txt

line3
line4

また

perl split.pl --file="data.txt" --numberLine=1

data1.txt

line1

data2.txt

line2

data3.txt

line3

data4.txt

line4

または perl split.pl --file="data.txt" --numberLine=3

data1.txt

line1
line2
line3

data2.txt

line4
4

3 に答える 3

5

スプリット:

system("split -l 2 $file");
于 2013-05-14T08:10:16.033 に答える
1
#!/usr/bin/perl
#

use strict;
use warnings;
use Getopt::Long;
use File::Basename;
my ($length, $file);

my $res= GetOptions ("numberLine=i" => \$length,
                      "file=s" => \$file);

my ($name,$path,$suffix) = fileparse($file,("\.txt","\.dat"));

open(my $fh,$file) || die "$file $!";

my $lc=0;
my $outfh=undef;
while(<$fh>) {
    if (($lc % $length) == 0) {
            my $n=int($lc/$length)+1;
            open($outfh,">$name$n.txt") || warn "$name$n.txt $!";
            }
    $lc++;
    print $outfh $_;
    }

または、ワンライナーとして行う方法を次に示します。スクリプト行で「numberLines」を自分で設定し、ファイル名を引数として指定するだけです

perl -n -e 'print; unless (($.-1)%2){$n++;open(F,">data$n.txt")} print F $_' data.txt
于 2013-05-14T08:05:07.647 に答える
0
 sed -e '1,2wdata1.txt' -e '3,$wdata2.txt' data.txt
于 2013-05-14T08:34:47.810 に答える