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

Como combinar espaços brancos em sed?

Como posso combinar espaços brancos em sed? Nos meus dados quero igualar todos os 3+ espaços em branco subsequentes (espaço de tabulação) e substituí-los por 2 espaços. Como é que isto pode ser feito?

Respostas (4)

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

A classe de caracteres \s irá corresponder aos caracteres brancos <tab> e <space>.

Por exemplo:

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

irá substituir cada sequência de pelo menos 3 espaços brancos por dois espaços.

  • *

REMARK: Para conformidade POSIX, utilize a classe de caracteres [[:space:]] em vez de \s, uma vez que esta última é uma extensão do GNU sed. Ver as especificações POSIX para sed e BREs

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

Isto funciona em MacOS 10.8:

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

Algumas versões mais antigas do sed podem não reconhecer \s como um símbolo de correspondência de espaço branco. Nesse caso pode combinar uma sequência de um ou mais espaços e separadores com “[XZ][XZ]*” onde X é um espaço e Z é um separador.

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