como eu echo $ something file.txt sem retorno de carro?

69

Quando eu echo $something >> file.txt , uma nova linha será anexada ao arquivo.

E se eu quiser acrescentar sem uma nova linha?

    
por onemach 01.03.2012 / 09:25

4 respostas

83

É para isso que serve o echo -n .

    
por 01.03.2012 / 09:28
36

printf é muito flexível e mais portátil que% código%. Como as implementações de C / Perl / etc, se você não terminar a string de formato com echo , nenhuma nova linha será impressa:

printf "%s" "$something" >> file.txt
    
por 01.03.2012 / 15:42
6

Se você estiver usando a saída do comando, você pode usar xargs em combinação com echo

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
    
por 14.12.2016 / 08:52
0

tr é outra alternativa.

Se você estiver usando echo como sua entrada, poderá ignorar qual tr -d '\n' .

Essa técnica também funciona quando a saída de outros comandos (com apenas uma linha de saída) é canalizada. Além disso, se você não sabe se os arquivos têm terminações de linha UNIX ou DOS, você pode usar tr -d '\n\r' .

Aqui estão alguns testes que mostram que isso funciona.

Newline incluído:

something='0123456789' ; echo ${something} | wc -c
11

Nova linha do UNIX:

something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10

estilo DOS:

something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10

Testado com BSD tr e GNU tr .

    
por 11.05.2017 / 13:41