“enquanto ler -r LINE; do ”está substituindo vários espaços por um único espaço [duplicado]

0

Estou tentando ler em um arquivo usando read no bash 3.2, mas read parece estar convertendo qualquer instância de vários espaços em branco em um único espaço.

Por exemplo, o código abaixo tem duas guias entre "olá" e "lá" e três espaços entre "hoje" e "mundo":

while read -r LINE; do
    echo $LINE
done <<< "hello     there
today   world"

No entanto, quando executado, sai com apenas um espaço entre cada conjunto de palavras:

hello there
today world

Em vez disso, gostaria que saísse as linhas com espaços em branco preservados, por exemplo:

hello       there
today   world

Existe alguma maneira de fazer isso? Se não com a leitura, então com outra coisa?

    
por Josh Sherick 06.08.2017 / 02:27

1 resposta

5

Coloque aspas em torno de sua variável ao imprimi-la. Ele está sendo expandido e a divisão de palavras, então echo está recebendo hello e there como argumentos separados.

echo "$LINE"

ou melhor

printf '%s\n' "$LINE"

manterá seu espaço em branco

Portanto, não é o read que está mudando seu espaço em branco, mas você não está citando a variável mais tarde

    
por 06.08.2017 / 02:30

Tags