Hallo Ekkard, meine Idee ist, es mit awk zu versuchen. Vielleicht kannst Du das ja entsprechend an Deine Beduerfnisse anpassen: echo "<xxxxxx> diesen Text <yyyyyy> ausgeben <zzzzzz>" | awk '{for (a=1;a<=NF;a++) {if ($a !~ "<" && $a !~ ">") printf("%s ",$a)}; printf("\n")}' Gruss, ulrich Ulrich Hiller Max-Planck-Institut fuer Astronomie Koenigstuhl 17 69117 Heidelberg Germany phone +49 6221 528238 fax +49 6221 528246 email hiller@mpia.de
Es soll aus einer sehr langen Zeile alle Vorkommen von <beliebiger Text> gelöscht werden. Der Text dazwischen soll ausgegeben werden.
Bsp: aus <xxxxxx> diesen Text <yyyyyy> ausgeben <zzzzzz> soll 'diesen Text ausgeben' werden.
Mit: echo <xxxxxx> diesen Text <yyyyyy> ausgeben <zzzzzz> | sed 's/<.*>//g'
werde ich aber leider nicht glücklich. Es wird das erste '<' und letzte '>' im String gewählt, die Ausgabe ist leer. Wie lösche ich nur die kleinen Einheiten zwischen < und >?
BTW wozu? - Ich will in OpenOffice-Dokumenten Volltextsuche mit grep betreiben. Nach einem unzip text.sxw steht ein content.xml zur Verfügung mit vielen Formatierungsanweisungen zwischen den <..> - und die will ich weg haben. Oder geht es eleganter, mit XSLT habe ich so in Erinnerung?