linux logfile não abre corretamente no bloco de notas do windows

4

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.

    
por user48993 22.07.2010 / 09:41

5 respostas

6

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

    
por 22.07.2010 / 09:56
6

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 ++

    
por 22.07.2010 / 09:56
1

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"

    
por 22.07.2010 / 10:37
1

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.

    
por 22.07.2010 / 11:25
0

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.

    
por 22.07.2010 / 09:48