2010-02-24 11:53:58 +0000 2010-02-24 11:53:58 +0000
232
232

Wie passe ich Leerzeichen in sed an?

Wie kann ich Leerzeichen in sed anpassen? In meinen Daten möchte ich alle 3+ aufeinanderfolgenden Leerzeichen (Tabulatorzeichen) abgleichen und durch 2 Leerzeichen ersetzen. Wie kann dies erreicht werden?

Antworten (4)

240
240
240
2010-02-24 12:08:44 +0000

Die Zeichenklasse \s entspricht den Whitespace-Zeichen <tab> und <space>.

Zum Beispiel:

$ sed -e "s/\s\{3,\}/ /g" inputFile

ersetzt jede Folge von mindestens 3 Whitespaces durch zwei Leerzeichen.


REMARK: Verwenden Sie für die POSIX-Konformität die Zeichenklasse [[:space:]] anstelle von \s, da letztere eine GNU sed-Erweiterung ist. Siehe die POSIX-Spezifikationen für sed und BREs

70
70
70
2013-08-28 20:28:34 +0000

Dies funktioniert unter MacOS 10.8:

sed -E "s/[[:space:]]+/ /g"
14
14
14
2010-04-07 15:12:34 +0000

Einige ältere Versionen von sed erkennen \s möglicherweise nicht als White Space Matching Token. In diesem Fall können Sie eine Folge von einem oder mehreren Leerzeichen und Tabulatoren mit ‘[XZ][XZ]*“ abgleichen, wobei X ein Leerzeichen und Z ein Tabulator ist.

11
11
11
2014-07-22 14:52:32 +0000
sed 's/[\t]*/"space or tab"/'