neuronkl Geschrieben 8. Februar 2010 Teilen Geschrieben 8. Februar 2010 Hallo zusammen, ich hoffe ihr könnt mir mit einem vermutlich relativ simplen Problem weiterhelfen, was mir eine Menge STRG+C / STRG+V Arbeit ersparen würde^^ (vielleicht ist der Weg über Excel auch möglich/leichter) Ich habe eine Tabelle als .txt-Datei, die z.B. so aussieht: --------------------------------------- |Materialnr. | Kommentar | --------------------------------------- |123.456-78 |$ Kommentar $ Kommentar| |123.456-78 |$ Kommentar | |123.456-78 |$ Kommentar $ Kommentar| |543.982-44 |$ Kommentar | |543.982-44 |$ Kommentar $ Kommentar| |876.543-21 |$ Kommentar | |876.543-21 |$ Kommentar | |876.543-21 |$ Kommentar | --------------------------------------- Das Problem hierbei ist, dass die Kommentare (inklusive Dollarzeichen $) zur selben Materialnr. alle in einer Zeile hintereinander stehen sollen, sodass jede Materialnr. nur 1-Mal vorkommt. Die überflüssigen, leeren Zeilen sollen dann gelöscht werden, also etwa so: --------------------------------------------------------------------------- |Materialnr. | Kommentar | --------------------------------------------------------------------------- |123.456-78 |$ Kommentar $ Kommentar $ Kommentar $ Kommentar $ Kommentar| |543.982-44 |$ Kommentar $ Kommentar $ Kommentar | |876.543-21 |$ Kommentar $ Kommentar $ Kommentar | --------------------------------------------------------------------------- Ich kenne mich leider mit Programmierung nicht aus, aber ich vermute einfach, dass es sich doch um keine wirklich aufwändige Programmierarbeit handeln sollte, den Vorgang automatisch ablaufen zu lassen oder? Vielleicht ist es ein bisschen viel verlangt (ich kann nur grob einschätzen, wie viel Arbeit es wohl machen dürfte), aber könnte mir jemand bitte einen Programmcode aufschreiben, der die Kommentare inklusive Dollarzeichen bei gleicher Materialnummer in die selbe Zeile (hintereinander mit Leerzeichen) bringt? Wenn die leeren Zeilen (Kommentarspalte) dann auch noch gelöscht würden, wäre das natürlich optimal Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kadauz Geschrieben 8. Februar 2010 Teilen Geschrieben 8. Februar 2010 Sieht die textfile genau so aus? Also stimme die Trennstriche (Pipes) und Anzahl der Leerzeichen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kadauz Geschrieben 8. Februar 2010 Teilen Geschrieben 8. Februar 2010 (bearbeitet) Ok, das ist hier mal meine Lösung. Vielleicht nicht elegant, aber es funktioniert. Ich hab jetzt auch nur die Daten einbezogen. Die Kopfzeile der Tabelle musst selbst einfügen. Als Basis habe ich genau Deine Tabelle (tabelle.txt) benutzt. Als neue Tabelle ensteht tabelleNEW.txt. Wenn die anders aussieht, muss eventuell der Code angepasst werden. Iss mit Perl unter Linux realisiert. Wenn es also mit Windows machen willst, musst die erste Zeile anpassen und ggf. noch activePerl o.ä. installieren. Oder einfach auf ner Linux VM ausführen. #!/usr/bin/perl open (IN, "<tabelle.txt"); #muss je nach Dateiname angepasst werden my @daten = <IN>; my %hash=(); foreach (@daten) { my @split = split(/\|/,$_); $split[1] =~ s/\s+//g; $split[2] =~ s/\s+/ /g; $hash{$split[1]}.=$split[2]; } my @sortierteSchluessel = sort keys %hash; open(OUT, ">>tabelleNEW.txt"); foreach (@sortierteSchluessel) { print OUT "|$_ |$hash{$_}|\n"; } Bearbeitet 8. Februar 2010 von Kadauz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kadauz Geschrieben 8. Februar 2010 Teilen Geschrieben 8. Februar 2010 edit: Dieses Thema hat meiner Meinung nach in Windows nichts verloren. IM Programmierforum isses besser aufgehoben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.