zwischen zwei zeilen suchen
zwischen zwei zeilen suchen
Hi,
ich moechte ab einer zeile beginnend mit "dn:" nach zeilen suchen die z.B. "foobar" beeinhalten. Treffer muessen der Zeile "dn:" zuordbar sein. Es soll immer nur unterhalb einer Zeile mit "dn:" gesucht werden bis die naechste auftaucht.
Das Ziel ist es alle Zeilen "dn: .*" zu finden, unterhalb derer etwas bestimmtes gefunden wird.
Mit sed gelang mir das irgendwie nicht.
Idee ?
ich moechte ab einer zeile beginnend mit "dn:" nach zeilen suchen die z.B. "foobar" beeinhalten. Treffer muessen der Zeile "dn:" zuordbar sein. Es soll immer nur unterhalb einer Zeile mit "dn:" gesucht werden bis die naechste auftaucht.
Das Ziel ist es alle Zeilen "dn: .*" zu finden, unterhalb derer etwas bestimmtes gefunden wird.
Mit sed gelang mir das irgendwie nicht.
Idee ?
meinst du so:
Gruß
gms
Code: Alles auswählen
root@gms4:~# cat x.txt
dn: abc
dn: bce
bla foobar blub
dn: cde
dn: def
blub foobar bloek
root@gms4:~# awk '/^dn/{ll=$0} /foobar/{print ll}' x.txt
dn: bce
dn: def
gms
Sehr interessant.
Doch leider verstehe ich die Zeile nicht ganz.
Ok, es soll zwischen /^dn/ und /foobar/ gesucht werden. Quasi wie ein awk '/<irgendwas>/,/<irgendwas</'.
Aber wie genau muss ich denn das {ll=$0} verstehen?
Kenn ich gar nicht.
Doch leider verstehe ich die Zeile
Code: Alles auswählen
awk '/^dn/{ll=$0} /foobar/{print ll}' file
Ok, es soll zwischen /^dn/ und /foobar/ gesucht werden. Quasi wie ein awk '/<irgendwas>/,/<irgendwas</'.
Aber wie genau muss ich denn das {ll=$0} verstehen?
Kenn ich gar nicht.
Oh, yeah!
Re: zwischen zwei zeilen suchen
sed arbeitet doch zeilenweise, damit kann es also gar nicht gehen, oder?lisan hat geschrieben:Hi,
ich moechte ab einer zeile beginnend mit "dn:" nach zeilen suchen die z.B. "foobar" beeinhalten. Treffer muessen der Zeile "dn:" zuordbar sein. Es soll immer nur unterhalb einer Zeile mit "dn:" gesucht werden bis die naechste auftaucht.
Das Ziel ist es alle Zeilen "dn: .*" zu finden, unterhalb derer etwas bestimmtes gefunden wird.
Mit sed gelang mir das irgendwie nicht.
Idee ?
Re: zwischen zwei zeilen suchen
"sed" ist nicht ganz so mein Ding, aber es geht damit auch:Monika hat geschrieben: sed arbeitet doch zeilenweise, damit kann es also gar nicht gehen, oder?
Code: Alles auswählen
root@gms4:~# sed -n -e '/^dn:/h' -e '/foobar/{g;p}' x.txt
dn: bce
dn: def
Gruß
gms