Use 'less' para visualizar dados alinhados por vírgula

7

Eu tenho um arquivo CSV grande .

Eu gostaria de ver meu arquivo usando less ou algum comando como ele que não precise ler o arquivo inteiro de uma só vez para mostrar-me parte dele.

Existe um comando por aí que possa mostrar meu arquivo em colunas alinhadas por vírgulas?

    
por Richard 16.08.2011 / 22:03

4 respostas

7

Não tenho certeza se isso é o suficiente para você, mas você pode usar o programa column e ler as partes selecionadas do arquivo usando head e / ou tail da seguinte forma:

 head -n 300 myfile.csv | tail -n 100 | column -ts ',' | less
 head -n-300 myfile.csv | head -n 100 | column -ts ',' | less

Você poderia envolvê-lo em algum script para visualizar partes diferentes do arquivo por vez (provavelmente sem less ). Além disso, receio que seria um problema usar apenas as ferramentas GNU para o trabalho.

    
por 16.08.2011 / 23:07
3

Use less , mas quando quiser ver alinhado na coluna de dados CSV, envie a página atual pelo comando column -ts , :

       | <m> shell-command
              <m>  represents  any  mark letter.  Pipes a section of the input
              file to the given shell command.  The section of the file to  be
              piped  is  between  the first line on the current screen and the
              position marked by the letter.   may also be ^ or $ to  indi-
              cate beginning or end of file respectively.  If  is . or new-
              line, the current screen is piped.

       m      Followed by any lowercase letter,  marks  the  current  position
              with that letter.

use |.column -ts , em less

    
por 17.08.2011 / 16:04
2

Eu tive uma boa experiência com tabview , embora nem sempre se comporte muito bem com arquivos grandes. No entanto, em conjunto com head , é bastante decente.

    
por 07.02.2017 / 21:40
0

Esta não é realmente uma questão estranha, mas em qualquer caso, eu recomendo usar algo diferente do less para visualizar arquivos csv. Não é realmente a ferramenta certa. Tente algo como R , que tem um bom suporte para analisar e, se necessário, trabalhar com arquivos CSV. Por exemplo. ler 5 linhas de um arquivo csv, faça

$ R
> read.csv("pheno.csv",nrows=5)
  faid   expid pid mid sex pheno
1 1420 NA12003   0   0   1     0
2 1420 NA12004   0   0   2     0
3 1420 NA10838   9  10   1     0
4 1420 NA12005   0   0   1     0
5 1420 NA12006   0   0   2     0

Veja

> help(read.csv)

para ajuda. Veja também

> help(write.csv)

para gravar em um arquivo, etc.

EDIT: Aconteceu de eu ter um arquivo csv que é 1.1G e tem 934991 linhas.

$ time Rscript -e 'read.csv("GenomeWideSNP_6.na29.annot.csv", skip=500000, nrows=5, header=FALSE)'

Isso pula 500.000 linhas e lê 5 linhas. R leva 1 minuto para retornar isso, e atinge o máximo de 620M (!) Parece que ele pode estar lendo as linhas puladas na memória, embora isso não faça sentido.

O resultado: eu não sou realmente um fã de R, mas para lidar com conjuntos de dados pequenos e médios, especialmente se você quiser fazer análises estatísticas sobre isso, você poderia fazer pior do que R. Uma alternativa é o Python e algumas bibliotecas de processamento csv.

    
por 18.08.2011 / 09:00