diff options
Diffstat (limited to 'extools/merge_lines.pl')
-rwxr-xr-x | extools/merge_lines.pl | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/extools/merge_lines.pl b/extools/merge_lines.pl new file mode 100755 index 00000000..8711e4ce --- /dev/null +++ b/extools/merge_lines.pl @@ -0,0 +1,43 @@ +#!/usr/bin/perl -w +use strict; + +if (scalar @ARGV < 2) { + die "Usage: $0 file1.txt file2.txt ...\n\n Concatenate the nth line of each input file. All files\n must be the same length.\n\n"; +} + +my @fhs=(); +for my $file (@ARGV) { + my $fh; + open $fh, "<$file" or die "Can't read $file: $!\n"; + push @fhs, $fh; +} + +my $first = shift @fhs; + +while(my $x = <$first>) { + my $ind = 0; + chomp $x; + my @fields = ($x); + for my $fh (@fhs) { + $ind++; + $x = <$fh>; + die "ERROR: Mismatched number of lines: $ARGV[$ind]\n" unless $x; + chomp $x; + push @fields, $x; + } + print join ' ||| ', @fields; + print "\n"; +} +my $ind = 0; +for my $fh (@fhs) { + $ind++; + my $x=<$fh>; + die "ERROR: $ARGV[$ind] has extra lines!\n" if $x; +} + +exit 0; + +for my $fh (@fhs) { + close $fh; +} + |