Rudolf Elpelt wrote (Sonntag, 2. Dezember 2001 14:18):
Am Sonntag, 2. Dezember 2001 13:23 schrieb Yosuke Tomoe:
Ich habe es geschafft mir mit egrep eine Zeile aus einer Datei rauszugreppen, aber ich werde aus der man bzw. info Seite für cut nicht wirklich schlau. Ich möchte alles was zwischen 2 bestimmten Strings liegt angezeigt bekommen. Ich habe es bis jetzt nur mit einzelnen Zeichen geschafft, aber ich finde keinen Hinweis wie so etwas mit Strings geht. Kann mir vielleicht jemand einen Tip geben?
das ist doch eher ein Fall für sed, oder?
Nur für die Fleißigen oder die Sorglosen. ;-) Da sed nur greedy matches beherrscht, ist die Implementation bei einem längeren String für die Endbegrenzung sehr langwierig (außer man legt keinen Wert auf Korrektheit). Mit perl geht vergleichsweise einfach (siehe stingy-match oder minimum-match).
# sed -n 's/.*string1\(.*\)string2.*/\1/p'
Das tut nicht (immer) was es soll. echo "string1 bla1 string2 bla string1 bla2 string2" \ | sed -n 's/.*string1\(.*\)string2.*/\1/p' Das gibt " bla2 " aus. .*string1 matcht "string1 bla1 string2 string1" \(.*\)string2 matcht " bla2 string2" Weiters würde \(.*\)string2 auch " bla2 string2 string2" matchen, wobei "bla2 string2" innerhalb der Klammer wäre. Thomas.