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

Re: Sed Verständnisproblem



Am Donnerstag 08 September 2005 19:31 schrieb Markus Schulz:
> ich habe ein Problem mit sed. Ich versuche aus Zeichenketten
> Leerzeichen zu entfernen, die sich nur zwischen kleinen Buchstaben

> 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'

Also \W nimmt alle nicht alphanumerischen Zeichen. Wenn Du also nur 
Leerzeichen entfernen willst, vielleicht nicht was Du suchst.

> echo "Bad Neu  brandenburg" | sed -e
> 's/\([a-z]\)\W*\([a-z]\)/\1\2/g' => Bad Neu  brandenburg
> ^^ funktioniert nicht mit den zwei Spaces.

Da Du \W* schreibst nimmt er halt auch nichts. Dann matched sed erst "e" 
und "u" und geht dann weiter und findet "b" und "r". Die Paarung "u" 
und "b" mit den spaces dazwischen findet er so nicht.
Weil sed -e kein "+" statt "*" kennt muß man das halt basteln:
's/\([a-z]\)\W\W*\([a-z]\)/\1\2/g'

oder halt gleich:
sed -r 's/([a-z])\W+([a-z])/\1\2/g'

Gruß Chris

-- 
A: because it distrupts the normal process of thought
Q: why is top posting frowned upon



Reply to: