head e cat não reconhecem arquivos de texto do Microsoft Excel

1

Eu tenho um grande arquivo .xls com 53760 linhas e 19 colunas. Eu salvei-o como Texto Delimitado por Tabulação para poder pré-processá-lo através de ferramentas de linha de comando e carregá-lo em R mais tarde. No entanto, quando eu corro

head myfile.txt

meu terminal mostra todas as linhas de uma só vez, como o

cat myfile.txt

o comando deve fazer. Mas se eu correr

cat myfile.txt | wc -l

a resposta que recebo é 0. Mais interessante, R pode ler meus dados, sem o auxílio de nenhum pacote extra, e identificar todas as 53760 linhas e 19 colunas. Eu suponho que é um problema do Excel, mas não consigo descobrir o que é isso.

Estou usando o Mac OS 10.9.1, o Microsoft Excel para Mac 2011, o bash 4.2 e o iTerm 2 1.0.0.20130622

    
por Marcus Nunes 09.01.2014 / 12:52

1 resposta

0

No Linux e no Mac OS, vá para o vi, execute a substituição a seguir e salve o arquivo novamente, e isso deve funcionar para você,

$ vi myfile.txt
:%s/^V^M/^V^M/g
:wq

onde ^ V ^ M significa digitar Ctrl + V, depois Ctrl + M e terminar cada linha com um retorno.

Isso deve colocar os caracteres normais do terminador de linha do UNIX no final das linhas de valor separadas por vírgulas do Excel. Você poderia até mesmo criar um script vi para automatizá-lo se você fizer muito, então chame esse script vi de um script bash, e esconda toda a incongruência desse sistema, e chame de dos2unix. : -)

Para criar o script vim em dos2unix.vim, faça o seguinte:

  1. Crie o script por

    $ vi -w dos2unix.vim myfile.txt

  2. Escreva cuidadosamente a sequência de 3 linhas, como mencionado acima.

  3. Agora aplique esse script a qualquer arquivo com

    $ vi -s dos2unix.vim anyfile.txt

E envolver tudo isso em um script bash ou até mesmo em um alias, como em, depende de você

alias dos2unix='vi -s ~/.vimscripts/dos2unix.vim '

Para poder fazer como foi construído, porque agora será - basta criar uma pasta chamada ~ / .vimscripts e colocar o arquivo de script criado acima.

    
por 17.01.2014 / 03:24