Isso não explica tudo, mas pelo menos parte do problema é que você tem retornos de carro no final de seus valores. Isso significa que está imprimindo algo assim:
-bad 0.0 -aswap -AMX -decim 1792<CR>
-dspfvs something<CR>
-grpdly 67<CR>
\
... exceto que cada "linha" é impressa em cima da anterior, porque elas são separadas por retornos de carro em vez de feeds de linha. Agora, se você comparar o que eu acabei de descrever à sua saída, ele não será exatamente igual (o meu dá "\ pdly 6792swap -AMX -decim 1792"), então eu acho que há outro em algum lugar por algum motivo.
A causa disso é provavelmente que o arquivo do qual você está lendo está no formato DOS / Windows, que usa um retorno de carro seguido por avanço de linha no final de cada linha; O unix apenas utiliza alimentação de linha e tende a tratar o retorno de carro como parte do conteúdo da linha, e. lê-lo em variáveis no final ... assim como você está recebendo. Uma opção é converter o arquivo para o formato unix com dos2unix
ou algum programa semelhante. Outra é remover os retornos de carro conforme você lê o arquivo, algo assim:
set decim = 'cat decimfile | tr -d '\r''
(com qualquer comando real que você esteja usando em vez da parte cat
). Ou, você pode limpar as variáveis depois de lê-las com:
set decim = 'echo $decim | tr -d '\r''
Observe que há diversas convenções diferentes sobre como "gravar" um retorno de carro; Eu tenho usado " <CR>
", mas tr
entende "\ r" e alguns outros programas usarão "^ m" ou "^ M".