Hallo Andre, Andre Tann <atann@alphasrv.net> (Fr 30 Okt 2009 11:56:25 CET): > Hallo zusammen, > > folgende Tabelle liegt mir vor: > > Name > Straße > PLZ Ort > Tel: [Tel] < optionale Zeile > Fax: [Fax] < optionale Zeile > E-Mail: [E-Mail] < optionale Zeile > Internet: [URL] < optionale Zeile > > Ein Adressdatensatz erstreckt sich also über mehrere Zeilen, und ist > vom nächsten durch eine Leerzeile getrennt. (…) > > Gibts einen Weg, wie ich das leicht umgewandelt bekomme, irgend > einen awk- oder Perl-Hack oder so? Auch wenn Perl natürlich schon in einer der Antworten vorkam, ich kann's mir trotzdem nicht verkneifen, eine weitere der möglichen Perl-Lösungen zu schreiben. Insbesondere schreibe ich diese Lösung, weil Sie a) die Fähigkeit Perls nutzt, einen ganzen Absatz als einen Datensatz zu betrachen b) Perls Fähigkeit zur formatierten Ausgabe #! /usr/bin/perl use strict; use warnings; use Data::Dumper; my %record; format STDOUT_TOP = NAME Strasse ADDR TEL FAX MAIL URL ----------+---------+---------+---------+---------+---------+--------- . format STDOUT = @<<<<<<<<< @<<<<<<<< @<<<<<<<< @>>>>>>>> @>>>>>>>> @<<<<<<<< @<<<<<<<< @{record}{qw/name strasse addr tel fax mail url/} . # input record separator is an empty line $/ = ""; while (<>) { # strip trailing whitespace s/\s+\n/\n/mg; /^(?<name>.*)\n (?<strasse>.*)\n (?<addr>.*)\n (?:tel:\s+(?<tel>.*)\n)? (?:fax:\s+(?<fax>.*)\n)? (?:e-mail:\s+(?<mail>.*)\n)? (?:internet:\s+(?<url>.*)\n)? /ix; # fill missing records %record = (tel => "", fax => "", mail => "", url => "", %+); # … it's up to you to do anything useful here # print Dumper \%record; # write; } Best regards from Dresden/Germany Viele Grüße aus Dresden Heiko Schlittermann -- SCHLITTERMANN.de ---------------------------- internet & unix support - Heiko Schlittermann HS12-RIPE ----------------------------------------- gnupg encrypted messages are welcome - key ID: 48D0359B --------------- gnupg fingerprint: 3061 CFBF 2D88 F034 E8D2 7E92 EE4E AC98 48D0 359B -
Attachment:
signature.asc
Description: Digital signature