Hallo,
die neue Version von GNU sed (4.x) ist nicht kompatibel zur alten (3.x), und
das erfordert die Überarbeitung von etlichen Skripten.
Nehmen wir an, ich möchte aus autoconf --version | head -1
autoconf (GNU Autoconf) 2.5.7
die Versionsnummer extrahieren.
Das ging bei mir problemlos mit:
sed 's/^[A-z-\.\ ()]*//;s/ .*$//'
Der Bindestrich nach A-z muß natürlich gequotet werden, worüber sich ein Woody
nicht beschwert hätte (sed 3.0.2), ein Valhalla dagegen schon (RedHat 7.3,
ebenfalls sed 3.0.2).
Nun gibt es aber das neue sed, welches kein A-z mehr mag, und bei obigem
Ausdruck nur noch 'autoconf' ausspucken würde statt 2.5.7. Es reagiert
witzigerweise auf a-z, ohne daß der i-Parameter angegeben wird, wobei dann
wiederum die Redhat-Version ein 'GNU' zurückliefert.
Wat nu, sprach das GNU...
Der Workaround ist ersteinmal, a-zA-z anzugeben, damit beide sed's was
wegzuparsen haben.
Korrekt kommt mir das aber nicht vor...
Josef
P.S. Valhalla läuft auf den SourceForge-Shellservern, wer's testen will.
--
Play for fun, win for freedom.