[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [bash] Einlesen einer Datei



Am 20.01.2005 um 14:39 Uhr schrieb Nicolas Heuser <nicolas1023@gmx.net>:

> Thilo Engelbracht wrote:
> > Leider weiß ich nicht, wie ich das realisieren soll... Könnt Ihr mir
> > helfen?
> 
> das kannst du mit einer sehr kleinen Änderung erledigen, einfach die Zeile:
>    exec < $1
> gegen:
>    egrep -v '(^$|^#)' $1 |
> tauschen.
> 
> (^$|^#) erkennt Leerzeilen (^$) und Zeilen die mit # beginnen (^#). -v
> negiert die Auswahl und | leitet die Ausgabe in die while Schleife

Hallo Nicolas!

Leider funktioniert Dein Lösungsvorschlag nicht...

Ich habe, wie Du geschrieben hast, die Zeilen

     exec < $1
     while [ -z "$quota" ]

durch

     egrep -v '(^$|^#)' $1 | while [ -z "$quota" ]

ausgetauscht.

Mein Problem habe ich aber so ähnlich gelöst:

   #!/bin/bash
   if [ -f $1 -a -r $1 ]
   then
      grep -E -v '(^$|^#)' $1 > /tmp/benutzer-info
      quota=""
      exec < /tmp/benutzer-info
      while [ -z "$quota" ]
      do
         read zeile
         account=`echo $zeile | cut -d : -f 2 | cut -d " " -f 2-`
         read zeile
         nkurz=`echo $zeile | cut -d : -f 2 | cut -d " " -f 2-`
         read zeile
         nlang=`echo $zeile | cut -d : -f 2 | cut -d " " -f 2-`
         read zeile
         userkw=`echo $zeile | cut -d : -f 2 | cut -d " " -f 2-`
         read zeile
         mailkw=`echo $zeile | cut -d : -f 2 | cut -d " " -f 2-`
         read zeile
         quota=`echo $zeile | cut -d : -f 2 | cut -d " " -f 2-`
      done
   rm /tmp/benutzer-info
   fi

   echo $account
   echo $nkurz
   echo $nlang
   echo $userkw
   echo $mailkw
   echo $quota

Trotzdem würde mich mal interessieren, WARUM Dein Vorschlag nicht
funktioniert. Denn meine Lösung mit der temporären Datei finde ich nicht
gerade optimal. Deine Lösung gefällt mir deutlich besser!

Hast Du eine Idee?

Vielen Dank für Deine Mühe (natürlich auch an alle anderen, die mir
Vorschläge unterbreitet haben)!

> Nicolas

Gruß,

Thilo

--
Registered Linux user #348074 with the Linux counter
http://counter.li.org



Reply to: