Mailinglist Archive: opensuse-de (1852 mails)

< Previous Next >
Re: Noch eine Skriptfrage
  • From: "Kyek, Andreas, VF-DE" <A.Kyek@xxxxxxxxxxxx>
  • Date: Wed, 3 May 2006 09:50:27 +0200
  • Message-id: <4498DDECFD5E9E40A2B03505E72605E5021DF4E4@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Andre Tann wrote:
> GUNREBEN, PETER (Peter), Mittwoch, 3. Mai 2006 09:30:
>
> > Wenn Du keine Angst vor Perl hast, geht das so:
> >
> > ========= 8<==============
> > #!/usr/bin/perl -w
> >
> > while(<>) {
> > @F = split('\t');
> > print "Andrede: $F[0], Vorname: $F[1], ...\n";
> > }
> > ========= 8<==============
> >
> > und den Dateinamen übergibst Du als Argument an das Skript.
>
> Danke für die Anregung. Angst hab ich keine vor Perl, Ahnung
> allerdings auch keine. Ich muß sehen, ob ich das mit vertretbarem
> Zeitaufwand hinbekomme. Ggf. frag ich einfach hier nochmal nach.
> Das hast Du jetzt davon ;)

Es geht für 'nen schnellen Hack natürlich auch ohne Perl.

Du sagtest, deine Felder sind <TAB> getrennt. Dann gehts für die
einfache Lösung mit Shell einfach so:

while read feld1 feld2 feld3 feld4 ...
do
...
done < inputfile

Deine Eingabewerte sind in feldx. Gibst du weniger Felder an
als die Datei enthält, ist das letzte Feld mit allen Werten
bis zum ende der Zeile gefüllt; insofert ist "while read zeile ..."
nur ein Sonderfall des allgemeineren Konstruktes.

(<TAB> ist einer der Werte im Standard $IFS; genaueres siehe
"man bash" oder andere Literatur Deiner Wahl)

Andreas

(mit awk:
awk '{print "feld1="$1; print "feld2="$2;}' inputfile

Deine Felder stehen in $1 bis $n)

< Previous Next >