sed 's/\. */. /g' < file
substituir ponto seguido por dois ou mais espaços com ponto seguido por um único espaço.
Estou preso a incluir expressões regulares com um comando sed.
P: Eu quero substituir todas as ocorrências de dois espaços após o fim de uma sentença com apenas uma vez o espaço.
Aqui está o que eu fiz:
sed 's/^ $/^$/' file
E não substituiu dois espaços por um espaço após o término da frase.
Saída eu recebo:
This is the output. Hello Hello
Saída que desejo:
This is the output. Hello Hello
Seu sed
command 's/^ $/^$/'
não fará o que você deseja. Apenas substituir todas as linhas contém um espaço com uma linha contendo ^$
.
Depende de quais caracteres marcam o final da frase, você pode fazer:
sed -e 's/\([.?!]\) \{2,\}/ /g' <file
Isso substituirá dois ou mais espaços após .
, ?
ou !
com apenas um espaço.
Isso é o que você pode estar procurando,
tr -s " " <filename
Amostra,
$ echo "This is the output. Hello Hello" | tr -s "[:blank:]"
This is the output. Hello Hello
Usando sed
,
$ echo "This is the output. Hello Hello" | sed 's/\. \+/. /g'
$ echo "This is the output. Hello Hello" | sed 's/\. \{1,\}/. /g'
This is the output. Hello Hello
Tags text-processing sed