Problem mit sed Statement - Extraktion eines Textblocks aus einer großen Datei

06/12/2008 - 13:03 von Thomas Wiedmann | Report spam
Hallo,

um einen Textblock aus einem langen Logfile zu extrahieren, hab ich
innerhalb einer Bash-Shell [GNU bash, version 3.00.16(1)-release
(powerpc-ibm-aix5.1)] ein sed-Statement mit folgendem Muster aufgerufen:

sed '67685,$!d;67794' < largelogfile | less -

Hierbei erhielt ich die Fehlermeldung:

sed: 0602-403 67685,$!d;67794 is not a recognized function.

Unter Linux auf einem anderen Rechner lief das schon mal (soweit ich mich
entsinne - ist schon ne Weile her).

Was ist an dem o. g. Statement falsch, daß diese Fehlermeldung kommt?
Wie muß das Statement lauten, damit ich damit aus largelogfile nur den
Textblock mit den Zeilen 67685...67794 rauspicke
a) um ihn mit less anzusehen?
b) um den Textblock in eine andere Datei (nennen wir sie mal extract.txt) zu
speichern?

Welche Alternativen gibt es, ohne sed dasselbe auf der o. g. Bash zu
erreichen, ohne largelogfile in ne andere Datei zu kopieren und dort manuell
die nicht benötigten Zeilen rauszuwerfen?


Thomas Wiedmann
 

Lesen sie die antworten

#1 Juergen Ilse
06/12/2008 - 13:24 | Warnen spam
Hallo,

Thomas Wiedmann wrote:
um einen Textblock aus einem langen Logfile zu extrahieren, hab ich
innerhalb einer Bash-Shell [GNU bash, version 3.00.16(1)-release
(powerpc-ibm-aix5.1)] ein sed-Statement mit folgendem Muster aufgerufen:

sed '67685,$!d;67794' < largelogfile | less -

Hierbei erhielt ich die Fehlermeldung:

sed: 0602-403 67685,$!d;67794 is not a recognized function.



So auf Anhieb wuesste ich jetzt auch nicht, wie dieses Statement vom
sed zu interpretieren sein sollte ...

Wie muß das Statement lauten, damit ich damit aus largelogfile nur den
Textblock mit den Zeilen 67685...67794 rauspicke
a) um ihn mit less anzusehen?
b) um den Textblock in eine andere Datei (nennen wir sie mal extract.txt) zu
speichern?



Wie waere es, sed mit der Option "-n" zu verwenden (per Default wird die
Eingabe nicht automatisch nach Bearbeitung auf stdout ausgegeben) und dann
einfach ein "67685,67794p" zu verwenden (explizit dena Ausdruck des ent-
sprechenden Abschnitts anfordern)? Das waere der erste Ansatz, der mir
einfallen wuerde. Um den Textblock in eine Datei abzuspeichern, kannst
du einfach die Ausgabeumlenkung der shell verwenden.

Tschuess,
Juergen Ilse ()
Ein Domainname (auch wenn er Teil einer Mailadresse ist) ist nur ein Name,
nicht mehr und nicht weniger ...

Ähnliche fragen