Como posso substituir todos os caracteres de uma string?

0

Eu tenho a seguinte string

signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma

Eu tentei usar sed para substituir o espaço por vírgula.

sed 's/ /,/g'
sed 's/[[:space:]]/,/g'

mas a saída ainda é a string original. Como posso substituir esse espaço em branco?

    
por OHLÁLÁ 08.08.2014 / 11:07

3 respostas

1

Qual é o problema?

$ echo signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma \
  | sed 's/ /,/g'
signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma

Talvez o que você esteja vendo não seja espaços em branco ou espaços em branco mistos. Experimente o caractere \s :

$ echo signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma \
  | sed 's/\s/,/g'
signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma

Se você não fizer isso, faça como os comentários de sua pergunta sugerem e passe a saída por hexdump para que você possa ver o que realmente está acontecendo porque não é um espaço.

Observe que você também pode usar tr para substituir o caractere, mas duvido que isso resolva seu problema se você não obtiver sed working:

$ echo signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma \
  | tr ' ' ','
signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma
    
por Oli 08.08.2014 / 11:41
1

\s corresponde a um único espaço ou a uma guia. Não corresponderá se houver dois espaços na string de entrada. Por isso, é melhor usar <space>+ no padrão.

$ echo 'signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma' | sed 's/ \+/,/g'
signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma
    
por Avinash Raj 08.08.2014 / 13:24
0

Você precisa escapar do operador comma dessa forma.

sed 's/ /\,/g'

Eu verifiquei o mesmo no meu sistema solaris,

  bash-3.2$ echo "signaldate signaltime period UwThiSon3dH140__mean     UwThiSon3dH140__sigma" | sed 's/ /\,/g'
  signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma
  bash-3.2$ 
    
por Tingrammer 08.08.2014 / 11:42

Tags