Jan Trippler schrieb:
Am Montag, 16. Februar 2004 23:45 schrieb Reinhold Plew:

Michelle Konzack schrieb:

[...]


wie kann man in einem Bash-Script eine Datei Zeile f�r Zeile
von der ersten bis zur lezten auslesen ?

versuch es mal mit awk, ist echt praktisch:


#script
FILE=<inputfile>
C_FILE=<outputfile>

cat ${FILE} | \

Useless use of cat award ;-) Das kannst Du dem awk gleich als Argument mitgeben.

Oh Danke, einer mehr in der Sammlung ;-)


awk -v CFILE=$C_FILE ' \

Die Ausgabe des awk kannst Du auch gleich hinten an den awk h�ngen.


BEGIN {
  FS="[:[EMAIL PROTECTED]" # Falls Du die Felder der Zeile trennen m�chtest

Daf�r gibt es eine awk-Option.


printf("echo 'Script gestartet...'") > CFILE

Huch? Was macht der echo innerhalb des printf? Soll die Ausgabe ein Shell-Scipt werden?

Im Original schon


}
{
  printf("%s", $0)          >> C_FILE # Ausgabe der gesamten
Zeile printf("%s - %s", $1, $3) >> C_FILE # Ausgabe Feld 1 + 3 }
END {
  printf("echo Script beendet...") >> CFILE
}
#cript Ende

Hier fehlt noch mindestens der ', der das awk beendet: } '

Beim Kopieren verloren gegangen


Meine Version:
FILE=<inputfile>
C_FILE=<outputfile>

awk -F "[:[EMAIL PROTECTED]" '\
BEGIN {
  printf "echo 'Script gestartet...'\n";
}
{
  printf "%s\n", $0; # alternativ: print $0;
  printf "%s - %s\n", $1, $3;
END {
   printf "echo Script beendet...\n";
} ' $FILE >$C_FILE

Ist schon richtig, allerdings war der komplette Script f�r jemanden gedacht, der nur 'seriell' lesen kann und von daher alles sch�n nacheinander (<daten rein>-<funktion>-<daten raus>) haben wollte.


Jan

Gruss Reinhold






--
Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/


Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Antwort per Email an