alle Zeilen ab einer bestimmten Zeile ausgeben - mit sed?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: alle Zeilen ab einer bestimmten Zeile ausgeben - mit sed?

Beitrag von Duff » 26.01.2009 15:42:47

Meillo hat geschrieben:
Duff hat geschrieben:[...] aber ich würde gerne wissen, wie ich es lösen kann, dass ab dem Regex x-Zeichen ausgeben werden.
(vermutlich s/Zeichen/Zeilen/, oder?)

Für AWK kann ich das bieten:

Code: Alles auswählen

awk '/re/{while (i++ < 10) { print; getline; } }'
Danke, die awk-Lösung ist schonmal super.

Nur wie sieht es in sed aus. Habe da immer so meine Probleme mit den Puffern...
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: alle Zeilen ab einer bestimmten Zeile ausgeben - mit sed?

Beitrag von Meillo » 26.01.2009 15:57:04

Duff hat geschrieben:Nur wie sieht es in sed aus. Habe da immer so meine Probleme mit den Puffern...
Ich denke das wird kaum gehen ohne sed sehr zu verbiegen. Mit Verbiegen meine ich z.B. Zeilen im Holdbuffer zu sammeln und auszugeben wenn 10 '\n' drin sind (Kann man nach '\n' suchen?) dann den Holdbuffer auszugeben und zu leeren. Oder auch im Holdbuffer einen Counter hochzuzählen.

Anders kann ich es mir nicht vorstellen .... wobei das ja aber auch nichts heißen muss ;-)

(Da sed Turing-vollständig ist ist sowieso alles möglich.)
Use ed once in a while!

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: alle Zeilen ab einer bestimmten Zeile ausgeben - mit sed?

Beitrag von detix » 27.01.2009 20:58:53

Duff hat geschrieben:Ich will nach einer regex nur eine bestimmte Anzahl von Zeilen ausgeben lassen (z.B. 10).
...aber ich würde gerne wissen, wie ich es lösen kann, dass ab dem Regex x-Zeichen ausgeben werden.
Zeilen oder Zeichen?
Für Zeilen so

Code: Alles auswählen

sed -n '/REGEX/,+10p' Datei
Für Zeichen so

Code: Alles auswählen

sed -n '/REGEX/s/^.*REGEX\(.\{1,10\}\).*/\1/p' Datei
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: alle Zeilen ab einer bestimmten Zeile ausgeben - mit sed?

Beitrag von Meillo » 27.01.2009 23:25:37

detix hat geschrieben:Für Zeilen so

Code: Alles auswählen

sed -n '/REGEX/,+10p' Datei
Das läuft aber nicht auf Duffs HP-UX, weil relative Addressierung wie `+10' nur eine Erweiterung von `gsed' und `ssed' ist.

Sonst hättest du Recht.
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: alle Zeilen ab einer bestimmten Zeile ausgeben - mit sed?

Beitrag von Duff » 28.01.2009 11:07:14

Meillo hat geschrieben:
detix hat geschrieben:Für Zeilen so

Code: Alles auswählen

sed -n '/REGEX/,+10p' Datei
Das läuft aber nicht auf Duffs HP-UX, weil relative Addressierung wie `+10' nur eine Erweiterung von `gsed' und `ssed' ist.

Sonst hättest du Recht.
Stimmt leider ;-(

Unter HP-UX bekomme ich nur die Fehlermeldung von sed, dass diese Funktion nicht geparsed werden kann.
Oh, yeah!

Antworten