Hallo Kai, Danilo, Martin,
Am 21.07.2015 um 21:00 schrieb Kai Kunstmann:
Dein "gensub" ersetzt "ab minimal 1 und maximal 6 Zeichen vor dem letzten Nicht-Leerzeichen bis zum Ende" durch "die gefundenen Zeichen". Das Ergebnis ist dann natürlich "alles vor den gefunden Zeichen" und "die gefunden Zeichen". Wenn du nur "die gefunden Zeichen" haben willst, muss dein RegEx den _ganzen_ String von Anfang an matchen:
print gensub("^.*(.{,6})\>\s*$", "\1", "g", sInput)
Ein ähnliches Konstrukt hatte ich bereits erfolglos getestet. Auch deine Variante funktioniert nicht so, wie sie soll.
Sowohl Danilo als auch Martin bringen mich aber langsam auf den Gedanken, dass dieses Konstrukt mit den verfügbaren AWK-Versionen nicht läuft. Zur Auswahl stehen nur 4.0.2 (CentOS 7) oder 3.1.7 (CentOS 6). Ich teste es nochmal mit den verschiedenen Optionen --traditional, --posix und/oder --re-interval, glaube aber nicht, dass es zu besseren Ergebnissen führen wird. Zur Not muss ich einen externen Aufruf von sed machen. Nutzung von P(erl|ython|ash) fällt leider vorerst aus.
Oder dieses Script für die Gesamtaufgabe: [...]
Besten Dank für den Tipp, das teste ich mal.
Viele Grüße /Marian