sed 's/\.[[:space:]]\{1,\}/. /g'
Substituiria um ponto (correspondido por \.
ou [.]
, lembre-se .
corresponde a qualquer caractere) seguido por um ou mais caracteres de espaço em branco ( [[:space:]]
sendo o equivalente padrão de \s
) com .
seguido por dois espaços.
Você também pode fazer isso para !
e ?
:
sed 's/\([.!?]\)[[:space:]]\{1,\}/ /g'
Com versões recentes do GNU sed
, você pode encurtá-lo para:
sed -E 's/([.!?])\s+/ /g'
Ou com perl
:
perl -lne 's/[.!?]\K\s+/ /g'
[[:space:]]
e \s
correspondem a qualquer caractere de espaço em branco (embora com perl
esteja limitado aos caracteres ASCII). Isso inclui caracteres CR, que ocorrem no final das linhas em arquivos de texto do MS-DOS, mas geralmente não são usados como espaçamento. Portanto, esses comandos podem acabar quebrando delimitadores de linha do MS-DOS se aplicados em arquivos formatados do MS-DOS.
Em vez de [[:space:]]
/ \s
, você pode usar [[:blank:]]
/ \h
que não incluem CR ( \h
é suportado por perl
, mas não o GNU sed
).