Evitar a impressão de quebras de linha no shell script

1
while read pos; do 
     string1='echo $pos | cut -c 20-38'
     string2="=$pos" 
     string3="$string1 $string2" 
     echo "$string3" 
done < file

Este é o código do meu script. Eu quero exibir a saída em uma única linha, mas a saída vem em linhas diferentes. Como posso fazer isso?

ex- pos = abcdefghi1234567890QWERTYUXY.tar.gz string1 = 1234567890QWERTYUXY string2 = abcdefghi1234567890QWERTYUXY.tar.gz

saída desejada:

1234567890QWERTYUXY abcdefghi1234567890QWERTYUXY.tar.gz

    
por sam 23.02.2011 / 11:04

3 respostas

3

Primeiramente, há vários erros de digitação no seu script. Além disso, você pode usar

echo -n "$string3 "

para imprimir a variável string3 , sem adicionar quebra de linha depois disso.

De man echo :

   -n     do not output the trailing newline
    
por 23.02.2011 / 11:14
1

você deseja usar tr -d '\n' no final da designação $string1 para remover a quebra de linha presente em seu arquivo:

while read pos; do 
     string1='echo $pos | cut -c 20-38 | tr -d '\n''
     string2="=$pos" 
     string3="$string1 $string2" 
     echo "$string3" 
done < file

observe que, no entanto, isso fornecerá a saída:

QWERTYUXY.tar.gz =abcdefghi1234567890QWERTYUXY.tar.gz

com pos = abcdefghi1234567890QWERTYUXY.tar.gz e o script que você deu.

    
por 23.02.2011 / 11:19
0

Existem muitas opções, mas a maneira que eu recomendaria é printf .

Ele não imprime uma nova linha por padrão, portanto, alterar seu echo para um printf deve remover a nova linha indesejada.

while read pos; do 
    string1='printf "%s" $pos | cut -c 20-38'
    string2="=$pos" 
    string3="$string1 $string2" 
    printf "%s\n" "$string3" 
done < file

Ou talvez apenas

while read pos; do 
    string1='printf "%s" $pos | cut -c 20-38'
    string2="=$pos" 
    printf "%s=%s\n" "$string1" "$string2"
done < file

Saída

1234567890QWERTYUXY=abcdefghi1234567890QWERTYUXY.tar.gz

Dito isso, seu script original funciona para mim também. : - /

Saída

1234567890QWERTYUXY abcdefghi1234567890QWERTYUXY.tar.gz
    
por 23.02.2011 / 11:27

Tags