Hallo Ueli
Vielen Dank für dein Echo. Es freut mich, dass mein Grep die aufwendige Arbeit erleichtern könnte. Spätestens im Sommer 2011 kommt also die Probe aufs Exempel =;o)
Kai Rübsamen hat mich auf ein Problem hingewiesen, wenn es pro Artikelnummer mehrere Textabsätze gibt, also z. B. 2 deutsche und 2 englische Textabsätze zur Nummer 1001 usw.
Mein Grep funktioniert nur, wenn pro Nummer und Sprache
ein dazugehöriger Textabsatz vorhanden ist. Der Grep von Kai schliesst zwar mehrere Textabsätze ein, funktioniert aber nicht «halbautomatisch», das heisst, nach dem ersten Suchen/Ersetzen-Durchlauf muss jeweils der Cursor manuell positioniert werden, was die Praxistauglichkeit des Greps natürlich stark einschränkt. Ich konnte dasselbe Problem durch einen Lookahead lösen, der aber nur funktioniert, wenn nicht mehrere Textabsätze vorkommen können.
Nach längerem Knobeln ist mir jetzt eine Lösung eingefallen, die erlaubt, das Sortieren vom Schluss her anzugehen. Gesucht wird also nicht mehr die
erste Nummer, sondern die
letzte im Textabschnitt. Nach dem Umsortieren der Textabsätze und dem Löschen des Doppelgängers findet der Grep-Ausdruck dadurch auch bei den weiteren Durchgängen immer eine Nummer, die einen entsprechenden Doppelgänger im deutschen Teil hat. Das ist der ganze Trick und auf jeden Fall der bessere Sortiermechanismus.
Hier der neue Grep, der auch dann funktioniert, wenn pro Sprache und Nummer
mehrere Textabsätze vorhanden sind. Es reicht, wenn mehrmals auf «Alle ändern» geklickt wird, die Einfügemarke (Cursor) muss nie an eine bestimmte Stelle platziert werden. (Vgl. auch Screenshot)
Suchen nach:
Ändern in:
Die Lösung beruht auf der Voranstellung von (^\d+\r(.+\r)+)*, das heisst, vor der eigentlichen Nummer, die gesucht wird (^\d+\r) und auf die später zurückverwiesen wird (\3), können beliebig viele Nummern mit den dazugehörigen Textabsätzen stehen. Dadurch wird jeweils die letzte noch nicht sortierte Nummer erfasst. Ein End of Story (\Z) am Schluss des Greps ist nicht einmal notwendig.
Optimal wäre ein Skript, das den Grep so lange in einer Schleife ausführt, bis die Suche abgeschlossen ist (0 Ersetzungen). Aber da bin ich überfragt.
Gruss, Marco