1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/perl use strict; use warnings; my $csvPath; # Pfad zu Deinem csv-Dokument open my $csvFH, "<", $csvPath or die $!; my @header = split /;/, <$csvFH>; print join "\t", @header; while (my @row = split /;/, <$csvFH>) { print join "\t", @row; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use Text::CSV; my $csv = Text::CSV->new({sep_char => ";"}); open my $fh, "<", "csv1" or die $!; open my $out, ">", "csv2" or die $!; chomp(my $header1 = <$fh>); my $header2 = "jahr;name"; # überschrift der neuen datei my %headers1 = do { my $i = 0; map { $_ => $i++ } split /;/, $header1; }; my @headers2 = map { $headers1{$_} } split /;/, $header2; print $out "$header2\n"; # neue überschrift ausgeben while (my $line = <$fh>) { my $status = $csv->parse($line) or die $csv->error_diag; my @columns = $csv->fields(); $status = $csv->combine(@columns[@headers2]) or die $csv->error_diag; $line = $csv->string(); print $out "$line\n"; }
2010-10-12T19:32:09 pq[...]
Code (perl): (dl )1 2 3 4 5use Text::CSV; my $csv = Text::CSV->new({sep_char => ";"}); [...] my @headers2 = map { $headers1{$_} } split /;/, $header2; [...]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
#!/usr/bin/perl use CGI; use strict; use IO::File; my $x=0; my $csv = "internet.csv"; my @csvdaten; my ($status, $artnr, $name, $short_description); my $headdesc = '($status, $artnr, $name, $short_description)'; my $content = $headdesc; # Datei internet.csv öffnen open (IN_CSV, "<$csv") || die "Datei internet.csv nicht lesbar"; # csv-Datei zeilenweise auswerten while (<IN_CSV>){ chop($_); $x++; if ($x=='1') { $_ =~ s/[ .{}]//g; $headdesc =~ s/[ \$\(\)]//g; $headdesc =~ s/,/;/g; open (OUT_STAMM, ">internet_artikelstamm.csv"); print OUT_STAMM $headdesc, "\n"; close (OUT_STAMM); } else { my ($ArtikelNr, $Bezeichnung, $Bezeichnung2) = split(/;/,$_); $artnr = $ArtikelNr; $name = $Bezeichnung; $short_description = $Bezeichnung2; $status = "Aktiviert"; # # # weitere Manipulation der String-Daten } my @stammdaten = ($status, $artnr, $name, $short_description); if (($name !~ /\*\*/)) { my $artikelstamm = join(';',@stammdaten); open (OUT_STAMM, ">>internet_artikelstamm.csv"); print OUT_STAMM $artikelstamm, "\n"; close (OUT_STAMM); } } close IN_CSV;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
#!/usr/bin/perl use strict; use warnings; # config my $inPath = "internet.csv"; my $outPath = "internet_artikelstamm.csv"; my $outHeader = 'status;artnr;name;short_description'; my %defaultVal = ('status' => 'Aktiviert'); # / config open (my $inFH, "<", $inPath) || die $!; open (my $outFH, ">", $outPath) || die $!; print $outFH "$outHeader\n"; chomp (my $firstRow = <$inFH>); my @inHeader = split /;/, $firstRow; while (<$inFH>) { chomp($_); my @inRow = split /;/, $_; my %outRow; $outRow{$_}= ($defaultVal{$_} // '') for (split /;/, $outHeader); for my $col (0..@inHeader-1) { $outRow{$inHeader[$col]} = $inRow[$col] if defined ($outRow{$inHeader[$col]}); } next if $outRow{'name'} =~ /\*\*/; my @printRow; push @printRow, $outRow{$_} for split /;/, $outHeader; print $outFH (join ";", @printRow) . "\n"; } close $inFH or die $!; close $outFH or die $!;