Auslesen von Informationen aus einer Datei

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
thilo
Beiträge: 241
Registriert: 12.12.2002 22:48:44

Auslesen von Informationen aus einer Datei

Beitrag von thilo » 14.02.2003 09:47:50

Hallo!

Zur Zeit habe ich - mal wieder - ein kleines Programmierproblem.
Vielleicht kann mir ja der eine oder andere User helfen..........

Also:
In einer Textdatei sind mehrere Informationen abgelegt. Die Datei möchte ich gerne
- mit der "grep"-Anweisung durchsuchen und
- mit dem "cut"-Befehl die gewünschten Informationen ausschneiden
Die Informationen sind durch Doppelpunkte getrennt.
Ferner habe ich eine "ende"-Zeile angegeben.


Hier mein Listing:
  • #!/bin/bash
    A=1
    while [ "$RECHNER" != "ende" ]
    do
    RECHNER=`cat datei.txt | grep ^$A | cut -d : -f 2`
    IP=`cat datei.txt | grep ^$A | cut -d : -f 3`
    echo "RECHNER: $RECHNER"
    echo "IP: $IP"
    A=`expr $A + 1`
    done

Die Textdatei ("datei.txt") sieht wie folgt aus:
  • 1:Server 1:192.168.1.186
    2:Server 2:192.168.1.112
    3:Mac 1:192.168.1.97
    4:Mac 2:192.168.1.32
    5:ende:ende
Das Programm funktioniert zwar - allerdings wird die 5. Zeile mit ausgewertet!
Die "ende"-Zeile der Textdatei soll aber NICHT ausgewertet werden!
In der Programmiersprache C gibt es dafür die "do-while-Schleife"........

Wie kann man ein solches Problem lösen (bitte nur Shell-Programmierung!)?


Vielen Dank für Eure Hilfe!

Gruß aus Hilden,

Thilo

ernohl
Beiträge: 1181
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Re: Auslesen von Informationen aus einer Datei

Beitrag von ernohl » 14.02.2003 11:17:55

thilo hat geschrieben:
  • #!/bin/bash
    A=1
    while [ "$RECHNER" != "ende" ]
    do
    RECHNER=`cat datei.txt | grep ^$A | cut -d : -f 2`
    IP=`cat datei.txt | grep ^$A | cut -d : -f 3`
    echo "RECHNER: $RECHNER"
    echo "IP: $IP"
    A=`expr $A + 1`
    done
Die Textdatei ("datei.txt") sieht wie folgt aus:
  • 1:Server 1:192.168.1.186
    2:Server 2:192.168.1.112
    3:Mac 1:192.168.1.97
    4:Mac 2:192.168.1.32
    5:ende:ende
Du willst für jede Zeile die Datei komplett einlesen?
Du gehst davon aus, dass die Zeilen nummeriert sind?
Und du gehst davon aus, dass du eine besondere Ende-Zeile hast?
GRAUSEN! Ich konnte meinen Monitor nur mit Mühe überreden, so etwas anzuzeigen. :wink:

Versuche mal etwas in der Art:

Code: Alles auswählen

exec <inputfile
read ZEILE
while [ $? -eq 0 ]
do
echo mach_was_du_willst_mit:   $ZEILE
read ZEILE
done
Gruß
ernohl

thilo
Beiträge: 241
Registriert: 12.12.2002 22:48:44

Beitrag von thilo » 14.02.2003 11:26:49

Hallo ernohl!

Vielen Dank für Deine Antwort. Bitte nicht verzweifeln - ich bin noch Anfänger.....


Gruß aus Hilden,

Thilo

Antworten