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: