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: