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