Ekkard Gerlach
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 >?
das folgende tut's:
echo "<xxxxxx> diesen Text <yyyyyy> ausgeben <zzzzzz>" |
sed -e 's/<[^>]*>//g'
----------------^^^^-------------- alles ohne >
allerdings geht das schief, wenn es geschachtelte Tags gibt: