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.

> 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?

> }
> {
>    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

> 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? Dann sollte man aber noch ein \n einbauen, der 
printf macht das n�mlich nicht automatisch.

> }
> {
>    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
> }

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

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

Jan


--
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