Como combinar espaço em branco no sed?

192

Como posso corresponder o espaço em branco no sed? Nos meus dados eu quero combinar todos os 3 + caracteres de espaços em branco subseqüentes (espaço de tabulação) e substituí-los por dois espaços. Como isso pode ser feito?

    
por Peter Smit 24.02.2010 / 12:53

4 respostas

200

A classe de caractere \s corresponderá aos caracteres de espaço em branco <tab> e <space> .

Por exemplo:

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

substituirá todas as sequências de pelo menos 3 espaços em branco por dois espaços.

OBSERVAÇÃO : Para conformidade com POSIX, use a classe de caractere [[:space:]] em vez de \s , pois o último é uma extensão de sed do GNU. Veja as especificações do POSIX para sed e BREs

    
por 24.02.2010 / 13:08
55

Isso funciona no MacOS 10.8:

sed -E "s/[[:space:]]+/ /g"
    
por 28.08.2013 / 22:28
13

Algumas versões mais antigas do sed não podem reconhecer \ s como um token de correspondência de espaço em branco. Nesse caso, você pode combinar uma sequência de um ou mais espaços e tabulações com '[XZ] [XZ] *', onde X é um espaço e Z é uma tabulação.

    
por 07.04.2010 / 17:12
8
sed 's/[ \t]*/"space or tab"/'
    
por 22.07.2014 / 16:52