[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Sed Verständnisproblem



Hallo,

ich habe ein Problem mit sed. Ich versuche aus Zeichenketten Leerzeichen 
zu entfernen, die sich nur zwischen kleinen Buchstaben bzw. vor 
Whitespace ein Großbuchstabe und hinter ein Kleinbuchstabe.
Z.B.
"Bad Hers  feld" => Bad Hersfeld
"B ad Hers  feld" => Bad Hersfeld
usw.

dafür habe ich folgende Expressions:
sed -e 's/\([a-z]\)\W*\([a-z]\)/\1\2/g' \
    -e 's/\([A-Z]\)\W*\([a-z]\)/\1\2/g'

und das funktioniert leider sehr eigenartig.
z.B. (zweite expression mal weggelassen, da egal)

echo "Bad Hers  feld" | sed -e 
's/\([a-z]\)\W*\([a-z]\)/\1\2/g' => Bad Hersfeld

^^ funktioniert wie erwartet.

echo "Bad Neu  brandenburg" | sed -e 
's/\([a-z]\)\W*\([a-z]\)/\1\2/g' => Bad Neu  brandenburg

^^ funktioniert nicht mit den zwei Spaces.

echo "Bad Neus  brandenburg" | sed -e 
's/\([a-z]\)\W*\([a-z]\)/\1\2/g' => Bad Neusbrandenburg

^^ funktioniert eigenartiger Weise, obwohl auch zwei Spaces und nur ein 
's' an Neu angehangen...
da ist doch irgendwie der Wurm drin?!?

Jemand eine Idee?

-- 
Markus Schulz

This is Linux Land-
In silent nights you can hear the windows machines rebooting



Reply to: