ich habe eine script was aufgeführt wird und darin ist auch enthalten:
#alles ausgeben zwischen den patterns
awk '/BlacklistSTART/{flag=1;next}/BlacklistEND/{flag=0}flag' /usr/local/etc/rc.d/meinscript
so das sich das script (datei) selber auslesen kann.(Soll Zustand)
wenn ich einen anderen dateinamen angebe, beide dateien sind identisch, funktioniert es, bei selbigen dateinamen also wenn ich $0 angebe, wird die gasamte Datei ausgeben, was aber falsch ist.
also awk '/BlacklistSTART/{flag=1;next}/BlacklistEND/{flag=0}flag' /usr/local/etc/rc.d/meinscript = FEHLER
awk '/BlacklistSTART/{flag=1;next}/BlacklistEND/{flag=0}flag' /usr/local/etc/rc.d/meinscript_andere_datei_name =OK
wo liegt den der Fehler, dass mit $0 die gesamte datei ausgegen wird und nicht das gescuhte zwischen den Patterns?
Danke
awk, komisches verhalten
Re: awk, komisches verhalten
Mein gawk 4.0.1 arbeitet wie gewuenscht.
Wie ist denn das Verhalten, wenn du statt einer Kopie der Datei einen Hardlink oder einen Softlink verwendest?
Du solltest auch noch daran denken, dass die Start- und Endpatterns in der Datei auch im AWK-Kommando vorkommen! Verwende dort also besser /B[l]acklistSTART/, um verwirrende Ergebnisse zu vermeiden, oder verwende Anker. (Das ist wie bei `ps | grep'.)
Btw: Du kannst dir das `next' sparen wenn du die Reihenfolge tauschst:
Wie ist denn das Verhalten, wenn du statt einer Kopie der Datei einen Hardlink oder einen Softlink verwendest?
Du solltest auch noch daran denken, dass die Start- und Endpatterns in der Datei auch im AWK-Kommando vorkommen! Verwende dort also besser /B[l]acklistSTART/, um verwirrende Ergebnisse zu vermeiden, oder verwende Anker. (Das ist wie bei `ps | grep'.)
Btw: Du kannst dir das `next' sparen wenn du die Reihenfolge tauschst:
Code: Alles auswählen
awk '/BlacklistEND/{flag=0} flag; /BlacklistSTART/{flag=1}'
Use ed once in a while!