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

Hoe kan ik witruimte in sed matchen?

Hoe kan ik witruimte in sed matchen? In mijn gegevens wil ik alle 3+ volgende witruimtes (tab spatie) matchen en vervangen door 2 spaties. Hoe kan dit?

Antwoorden (4)

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

De karakterklasse \s komt overeen met de witruimtes <tab> en <space>.

Bijvoorbeeld:

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

vervangen elke reeks van minstens 3 witruimtes door twee spaties.

  • *

REMARK: Gebruik voor POSIX-conformiteit de karakterklasse [[:space:]] in plaats van \s, aangezien dit laatste een GNU sed extensie is. Zie de POSIX-specificaties voor sed en BREs .

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

Dit werkt op MacOS 10.8:

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

Sommige oudere versies van sed herkennen misschien niet als een bijpassende witte ruimte. In dat geval kun je een reeks van een of meer spaties en tabs matchen met ‘[XZ][XZ]*’ waarbij X een spatie is en Z een tab.

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