根据重复的行值拆分文本文件的内容

时间:2014-04-29 19:34:55

标签: linux split text-processing

我有一个单列文本文件,如:

A.TXT

0;
1;
2;
3;
.
.
.
0;
4;
8;
.
.
.
0;
6;
9;

目标是根据行的值将A.txt拆分成文件,对于在A.txt中多次看到的每个行值,必须有一个基于该行的单独拆分。这是一个假设" 0;"的所需输出文件的示例。是A.txt中唯一的重复元素:

A1.txt

0;
1;
2;
3;
.
.
.

A2.txt

0;
4;
8;
.
.
.

A3.txt

0;
6;
9;
.
.
.

任何想法如何通过linux bash脚本编写?

1 个答案:

答案 0 :(得分:0)

Perl救援:

#!/usr/bin/perl
use warnings;
use strict;

my @lines = <>;
chomp @lines;

my %count;
$count{$_}++ for @lines;

my $OUT;
my $x;
for my $separator (grep $count{$_} > 1, keys %count) {
    for my $line (@lines) {
        open $OUT, '>', 'A' . ++$x . '.txt' or die $!
            if not $OUT or $separator eq $line;
        print {$OUT} "$line\n";
    }
    undef $OUT;
}