X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=text%2Fcsvcat;fp=text%2Fcsvcat;h=4f91b133135ebae35823702b9630ceb89bde47d4;hp=0000000000000000000000000000000000000000;hb=f9201dc2d1699f5161e5e29690a1634e8063bb85;hpb=d1812fa8c4c9e220978d650adb3611c978a2a56b diff --git a/text/csvcat b/text/csvcat new file mode 100755 index 0000000..4f91b13 --- /dev/null +++ b/text/csvcat @@ -0,0 +1,71 @@ +#!/usr/bin/perl -w + +use strict; +use Getopt::Long; + +my $help; +my $headers = 1; +my $sourcecolumn = 1; +my $sourcetype = 'partial'; +my $first_headers; +my $use_tab = 1; +my $use_comma = 0; + +GetOptions( + 'headers!' => \$headers, + 'source!' => \$sourcecolumn, + 'source-type=s' => \$sourcetype, + 'use-tab' => \$use_tab, + 'use-comma' => \$use_comma, + 'help|?' => \$help +); +if ($use_comma) { + $use_tab = 0; +} +if ($help || @ARGV == 0 || ($sourcetype ne 'partial' && $sourcetype ne 'full')) { + print "$0 <--headers|--noheaders> <--source|--nosource> <--source-type=full|--source-type=partial> <--use-tab|--use-comma> [file1] [file2] \n"; + exit 0; +} + +sub munged_source { + my $fn = shift; + my $s = $fn; + if ($sourcetype eq 'partial') { + my @f = split(/\//, $fn); + $s = $f[0]; + } + return "$s" . ($use_tab ? "\t" : ','); +} + +sub cat_file { + my $fn = shift; + open FILE, "$fn"; + if ($headers) { + if ($fn ne $ARGV[0]) { + my $check = ; # check and throw away headers for subsequent files + if ($check ne $first_headers) { + print STDERR "Mismatched headers between $ARGV[0] and $fn\n"; + print STDERR "$first_headers\n$check\n"; + exit 1; + } + } else { + print "x_source" . ($use_tab ? "\t" : ',') if $sourcecolumn; # potential column header + $first_headers = ; + print $first_headers; + } + } + while (my $line = ) { + print munged_source($fn) if $sourcecolumn; + print $line; + } + close FILE; +} + +my @files = @ARGV; +foreach my $file (@files) { + cat_file($file); +} + + + +