Shellskript: Wenige Zeilen auslesen

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

Shellskript: Wenige Zeilen auslesen

Beitrag von thilo » 08.05.2003 08:40:05

Hallo!

In einem Verzeichnis habe ich sehr viele Textdateien, die immer gleich aufgebaut sind:
In der ersten Zeile steht ein Name, in der zweiten Zeile steht eine Telefonnummer.

Mit dem folgendem Skript kann ich mir alle Namen und Rufnummern ausgeben:

Code: Alles auswählen

for name in verzeichnis/*
do
cat $name
echo
done
Nun möchte ich folgendes erreichen:
- Der Name (also die erste Zeile) soll in der Variablen $name gespeichert werden.
- Die Telefonnummer (also die zweite Zeile) soll in der Variablen $nummer gespeichert werden.


Wie kann ich das erreichen?


Vielen Dank für Eure Hilfe.


Gruß,

Thilo

Benutzeravatar
fred19726
Beiträge: 507
Registriert: 18.07.2002 03:38:38
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Heidelberg (DE)
Kontaktdaten:

Beitrag von fred19726 » 08.05.2003 12:07:01

Hi, das sollte dir helfen:

$NAME=`head -n 1 $name`
$NUMMER=`head -n 2 $name | tac | head -n 1`

MFG Fred
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein

Benutzeravatar
fred19726
Beiträge: 507
Registriert: 18.07.2002 03:38:38
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Heidelberg (DE)
Kontaktdaten:

Beitrag von fred19726 » 08.05.2003 12:08:56

Merke: $NAME und $NUMMER (also der inhalt der variablen) haben jeweils ein return am ende !
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 08.05.2003 12:15:34

@fred

elegante lösung :)

ich hätts so gemacht

Code: Alles auswählen

for name in *.txt
 do
   uname=`cat $name | awk '{ if(NR==1) print $0 }'`
   unum=`cat $name | awk '{ if(NR==2) print $0 }'`
   echo "User: $uname, Nummer: $unum"
done
Viele wege führen nach Rom 8O

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

Beitrag von thilo » 08.05.2003 18:09:18

Hallo!

Danke für Eure Lösungsvorschläge!


Gruß,

Thilo

Antworten