[sed] letztes Leereichen ändern, alle punkte außer den letzten Punkt entfernen

18/01/2011 - 15:20 von Erik Werner | Report spam
Hallo zusammen,

ich verspüre immer mal den Wunsch folgendes realisieren zu können:

Teststring1="Das.ist.ein.Test.blub"
Zielstring1="Das ist ein Test.blub"

Teststring2="Das ist auch ein Test blub"
Zielstring2="Das ist auch ein Test.blub"

Also im ersten Beispiel möchte ich alle Punkte außer den letzten Punkt
eines beliebigen Strings entfernen.

Im zweiten Beispiel möchte ich nur das letzte Leerzeichen durch einen
Punkt ersetzen.

Ginge dies mit sed? Wenn ja wie?


Viele Grüße
Erik
 

Lesen sie die antworten

#1 Thorsten Michels
18/01/2011 - 17:05 | Warnen spam
Erik Werner wrote:
ich verspüre immer mal den Wunsch folgendes realisieren zu können:

Teststring1="Das.ist.ein.Test.blub"
Zielstring1="Das ist ein Test.blub"

Teststring2="Das ist auch ein Test blub"
Zielstring2="Das ist auch ein Test.blub"

Also im ersten Beispiel möchte ich alle Punkte außer den letzten Punkt
eines beliebigen Strings entfernen.

Im zweiten Beispiel möchte ich nur das letzte Leerzeichen durch einen
Punkt ersetzen.

Ginge dies mit sed? Wenn ja wie?



Fall 2:
sed -e 's/ \([^ ]*\)$/.\1/'

Fall 1 ist kniffliger. Wenn klar ist, dass im Teststring (oder zumindest
im blub-Teil davon) keine Leerzeichen vorkommen, dann einfach erst alle
Punkte durch Leerzeichen ersetzen und dann Fall 2 anwenden:
sed -e 's/\./ /g' -e 's/ \([^ ]*\)$/.\1/'

Saemtliche Angaben ohne Gewaehr.

HTH,
Thorsten

Thorsten Michels

DrNethack on #awg
One's never alone with a rubber duck. (Douglas Adams)

Ähnliche fragen