linux-l: awk Frage

Dr.Bernd Freistedt bf at bcf.in-berlin.de
Mi Feb 14 19:03:05 CET 2001


---Lutz Pflughaupt (linux-l at mlists.in-berlin.de) wrote on Wed, 14 Feb 2001 17:41:20 +0100
> Hallo liebe Linux User,
> bin mal wieder am Grübeln, wie ich folgendes mit einer awk Zeile
> bewerkstelligen kann.
> In einer Zeile wie dieser:
> 
> awk '$3~/^02/||$3~/^04/||$3~/^05/ {printf(%2s%4s%-8s\n ,$8,$9,$10,$11)}'
> <tmp1 > tmp2 
> 
> möchte ich erreichen daß die jeweils zutreffende Zeile nach Umleitung in
> tmp2 anschließend aus tmp1 entfernt wird. 
> vielen Dank Lutz.

was Du mit der awk-Zeile moechtest, ist mir nicht ganz klar. Auf
jeden Phall wird's einen Parse Error geben - oder mir ist die
Struktur der Datei nicht klar.

Sei es wie es sei.

Ansatz:
MZEILE=`und hier kommt Deine awk-Zeile (ohne Umleitung)`
(e)grep -v $MZEILE tmp1 > $$ ; mv $$ tmp1

Damit ist dann die inkriminierte Zeile aus tmp1 entfernt (wenn
ich das Problem richtig verstanden habe).
Wegen grep/egrep: da ich nicht weiss, wie regexp-kritisch die
Zeile ist, muesstest Du ggf. $MZEILE noch regexpr-like
aufarbeiten, z. B. mit sed, dann nimm egrep, sonst bei einfachem
ASCII-Inhalt reicht grep.

Gruessli
Bernd




Mehr Informationen über die Mailingliste linux-l