Examinando caracteres EOL em um CSV

0

Eu tenho um arquivo csv que pretendo importar para uma tabela mysql . Por isso, gostaria de me certificar de que estou a relatar que é LINES TERMINATED BY corretamente. No entanto, não consigo descobrir quais caracteres estão terminando as linhas neste csv.

Eu acho que é terminado por \n (o padrão Unix EOL). Como posso determinar isso com certeza?

Eu tentei

  • cat -v file.csv
  • file file.csv

Eu também tentei usar o vim e :set list , que mostrou apenas a localização das quebras de linha com $

Qualquer sugestão seria apreciada

    
por neanderslob 29.05.2015 / 09:52

3 respostas

2

Você pode criar um dump hexadecimal do seu arquivo com xxd , que faz parte do pacote vim-common .

xxd file.csv | less

Em seguida, verifique os finais da linha:

  • 0a = > \ n
  • 0d = > \ r
  • 0d0a = > \ r \ n
por Jenson 29.05.2015 / 10:23
1

Você pode usar o file para fornecer uma indicação do tipo de finalização da linha.

Unix:

$ file file1.txt
file1.txt: ASCII text

DOS:

$ file file2.txt
file2.txt: ASCII text, with CRLF line terminators

e sabendo que o DOS usa retorno de linha e alimentação de linha ("\ r \ n") como final de linha, o qual o Unix usa apenas o avanço de linha ("\ n").

Assim, você pode determinar o que é EOL de qualquer arquivo desejado.

    
por Maythux 29.05.2015 / 10:04
1

Em vez de VERIFICAR, por que não simplesmente definir o estilo de finalização de linha de sua preferência:

sudo apt-get dos2unix lhe dará acesso aos utilitários de linha de comando dos2unix e unix2dos .

Estes irão converter arquivos de texto de acordo com os nomes.

Advertência: arquivos com conteúdo misto tem sido problemático, não estou atualizado se esse problema desapareceu.

    
por Hannu 29.05.2015 / 19:01