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)
> 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 > |