Editor CSV baseado em console interativo

12

Embora os aplicativos de planilha para editar arquivos CSV no console costumavam ser um dos aplicativos matadores mais antigos para computadores pessoais, apenas alguns deles e ainda menos documentação sobre eles ainda são mantidos ativamente.

Depois de fazer uma extensa pesquisa na web, páginas de manual e código fonte, acabei com os três aplicativos a seguir, todos com desvantagens fundamentais:

  • sc: abrev. para calculadora de planilha; boa ferramenta com vi keybindings, mas não coloca seqüências de caracteres que contêm o delimitador entre aspas ao exportar para o formato separado por delimitador e não pode importar arquivos csv corretamente, ou seja, todos os números são interpretados como strings
  • Oleo GNU: não parece mais ser mantido ativamente desde 2001 e, portanto, não há pacotes para grandes distribuições linux
  • teapot: oferece pacotes para vários sistemas operacionais, mas usa, por exemplo, nomes contra-intuitivos para células (números para linha e coluna, ou seja, 11 parece ser a linha 1, coluna 1) e código supérfluo para a GUI do FLTK

Vários modos do Emacs também não citam seqüências de caracteres que contêm bem o delimitador ou exigem muito mais digitação para inserir o andaime de uma tabela.

Portanto, eu ficaria muito grato por superar uma dessas desvantagens ou qualquer dica sobre outro editor de CSV baseado em console. Na verdade, ele não precisa fazer cálculos apenas editando células ou colunas e linhas.

Enfermeira do pinguim
fonte
stackoverflow.com/questions/1875305/command-line-csv-viewer
Ciro Santilli冠状病毒审查六四事件法轮功

Respostas:

11

Geralmente, espera-se que um editor de CSV reconheça números como tal, cite cadeias apenas quando necessário, permita delimitadores dentro de cadeias citadas e não retire células vazias. Então, isso na tela

1                      2          3
col-one                           col,three
                       col two
This is a long string. 1.23456789 3.14

deve se correlacionar com isso no arquivo

1,2,3
col-one,,"col,three"
,"col two",
"This is a long string.",1.23456789,3.14

Oleo não é mantido por vários anos. Eu instalei um pacote antigo em um sistema Debian recente e o achei estranho e muito complicado. As operações levam mais do que o número usual de pressionamentos de tecla. Todas as strings devem ser citadas e você deve fazer isso manualmente. O filtro de importação CSV não pode manipular vírgulas dentro de cadeias. Os números de precisão longa não são mantidos em sua forma original (por exemplo, 1,23456789 passa a 1,234567889999999). Às vezes, o processo se torna descontrolado, para que não possa ser eliminado da linha de comando.

Parece que MacroCALC, Teapot e SC são as únicas planilhas de CLI ainda em manutenção.

O MacroCALC não pode importar nem exportar corretamente arquivos CSV.

O bule de chá é um pouco incomum, mas é muito fácil de usar e o manual é uma leitura rápida. A importação / exportação de CSV é simples. Tem duas peculiaridades principais. Primeiro, embora faça citações automáticas de strings, sempre cita todas as strings. Segundo, ele truncará / expandirá todos os números decimais para a precisão padrão. A interface FLTK está operacional, mas é incorreta.

O SC é rápido e estável. Opera de maneira semelhante ao vi e é tão amigável para iniciantes. Programas externos são necessários para converter entre o formato SC e CSV. A pscferramenta (CSV -> SC apenas) é instalada com o SC e funciona da seguinte maneira:

cat file.csv | psc -k -d, | sc

Após a edição, salve o arquivo com o comando Put e use o ssconvertutilitário (somente SC -> CSV) que acompanha o Gnumeric:

ssconvert file.sc file.csv

Tentei tropeçar em várias coisas psc- ssconverte o processo parece estável. Números e seqüências de caracteres são manipulados corretamente.

Um método alternativo para editar arquivos CSV seria usar um editor de texto com um plug-in apropriado. Tanto o Emacs quanto o Vim os possuem, embora a versão do Vim seja mais rápida e tenha mais recursos. Eles oferecem destaque, alinhamento de coluna e operações de bloco. Eu achei ambos muito lentos e com bugs.

user60598
fonte