em vez do bloco de notas, tente o notepad ++ que pode lidar com quebras de linha unix sem a necessidade de modificar um arquivo. Ele também manterá o estilo de quebra de linha quando, por exemplo, editar arquivos de configuração
Eu tenho um pequeno pedaço de código na minha caixa de linux de chapéu vermelho como
echo $ ddate ";" $ hora ";" $ cpu > > / home / logfile
A saída está no vi
2010-04-10 12:23:32;01
2010-04-10 12:23:32;01
2010-04-10 12:23:32;01
mas quando eu ftp isso para uma máquina windows e abri-lo no bloco de notas
eu vejo
2010-04-10 12:23:32;01 [] 2010-04-10 12:23:32;01 [] 2010-04-10 12:23:32;01
mostra-me em uma linha e se eu copiar isso para excel, mostre-me em linhas diferentes.
meu palpite é que o bloco de notas não pode entender a nova linha []
existe uma maneira de escrever de forma diferente para que possa ser exibida corretamente no bloco de notas.
em vez do bloco de notas, tente o notepad ++ que pode lidar com quebras de linha unix sem a necessidade de modificar um arquivo. Ele também manterá o estilo de quebra de linha quando, por exemplo, editar arquivos de configuração
Se você quiser apenas visualizar os dados, algo como o WordPad (que geralmente vem com o Windows) é uma solução rápida & lerá o LF como uma nova linha. Coisas como bloco de notas não, para aqueles que você precisa de LF e CR.
Uma alternativa melhor é obter um editor de texto do Windows que possa ser muito melhor, como o Notepad ++
A diferença entre os arquivos de texto no Unix e no Windows é que o primeiro usa o caractere de alimentação de linha ( \n
) para terminar uma linha, enquanto o segundo usa retorno de carro e alimentação de linha ( \r\n
). Você vê esses quadrados no bloco de notas porque o editor percebe um avanço de linha sem um retorno de carro anterior e não sabe como exibi-lo corretamente.
Se você acessar o arquivo de log através do Vim e do Bloco de Notas, considere modificar o script para gerar um arquivo de texto no estilo Windows, especificando manualmente o delimitador de linha a ser usado:
echo -ne "$ddate;$time;$cpu\r\n"
Na sua caixa Linux, execute isto antes de fazer o ftp do arquivo:
unix2dos /home/logfile
Se você tiver o Cygwin ou um recurso semelhante em sua caixa do Windows que forneça ferramentas semelhantes ao Unix, poderá executar unix2dos
após a transferência de arquivos.
A propósito, esta é uma versão simplificada do seu script. Não há razão para citar individualmente os pontos e vírgulas.
echo "$ddate;$time;$cpu" >> /home/logfile
Além disso, esse não é o melhor lugar para o arquivo. Geralmente, não deve haver arquivos nesse diretório. O lugar que deve ir depende de vários fatores. Percebo, no entanto, que isso pode ser apenas um exemplo para os propósitos da sua pergunta.
Verifique seu cliente de FTP. Deve haver uma opção para transferir o arquivo como um arquivo de texto (não binário).
Nesse modo, ele converteria automaticamente as quebras de linha (a propósito: essa opção também pode bagunçar arquivos binários, como imagens, quando você os usa erroneamente)
Ou o comando unix2dos
na sua caixa linux para converter o arquivo para o formato linebreak do DOS / Windows.