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

Re: Wie eine Datei Zeile für Zeile auslesen ?




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="[:\t@]" # 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 "[:\t@]" '\
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







Reply to: