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

Re: tricky pipe-Problem



Bastian Venthur wrote:
> Hi Liste,
> 
> ich habe eine Textdatei aus der mich aber nicht alles interessiert, sondern
> nur die Zeilen zwischen zwei Strings -- sagen wir "foo" und "bar":
> 
> bla
> ...
> bla
> foo
> interessanter Teil
> bar
> bla
> ...
> bla
> 
> Ich möchte diesen Teil in der Mitte behandeln wie eine normale Textdatei,
> also durch eine pipe jagen können usw:
> 
> cat Textdatei | gibt_teil_in_der_mitte_zurück | und weiter gehts...
> 
> Bekommt man dieses "gib teil in der Mitte zurück" mit shell-Mitteln hin oder
> muss man auf python oder perl zurückgreifen?
> 
> 
> Schöne Grüße
> 
> Bastian
> 
> 
Ich würde das mit einem Awk-Programm machen:
cat Textdatei | awk  '/bar/ {x = 0} { if (x) print $0} /foo/ {x=1}' |
und weiter gehts...


Dabei bilden die drei Befehle
1 /bar/ {x = 0}
2 { if (x) print $0}
3 /foo/ {x=1}
ein AWK-Programm

/foo/ und /bar/ koennen jeweils regulaere Ausdruecke sein. Awk fuehrt
dieses Programm fuer jede Zeile aus. x ist dabei eine globale Variable.
Ausgefuehrt wird ein Programm in geschweiften Klammern immer genau dann,
wennn der reg. Ausdruck vor der Zeile passt. (Zeile 2 enthaelt einen
leeren Ausdruck udn wird für jede Zeile ausgefuehrt).

Wird foo gefunden, wird das Drucken aktiviert, beim finden von bar
wieder deaktiviert.

Hilft das weiter?

Gruss,
Christian



Reply to: