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

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



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="[:\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?

> }
> {
>    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="[:\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? 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 "[:\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

Jan



Reply to: