convertendo espaços em traços

4

Dado um arquivo com várias linhas, quero alterar todos os espaços para traçar.

Eu gostei disso:

#!/bin/bash
while read line; do
    echo "${line// /-}"
done

Isso funciona muito bem, mas eu preciso de um método melhor!

    
por Sijaan Hallak 16.06.2016 / 21:07

5 respostas

19

O utilitário padrão tr faz exatamente isso:

tr ' ' '-' <filename.old >filename.new
    
por 16.06.2016 / 21:57
4
sed --in-place 's/ /-/g' /path/to/file
    
por 16.06.2016 / 21:08
3

com perl:

perl -ne 's/ /-/g;print ' FILE 
    
por 16.06.2016 / 22:45
2

Use -i para gravar as alterações no arquivo ou -e para que ele grave as alterações no stdout sem modificar o arquivo.

sed -i 's/ /-/g' filename
sed -e 's/ /-/g' filename
    
por 16.06.2016 / 21:28
1

Eu gosto de usar substituir.

replace " " "-" </path/to/file 
    
por 16.06.2016 / 21:14