Para o vim, existe um bom plugin csv.vim .
O que é uma boa maneira de editar arquivos CSV no Ubuntu?
Os arquivos são parecidos com isto:
This,is,data,with,a,header
2,2,3,4,,
1,,3,,6,6
,5,3,5,5,6
1,2,,,,
1,2,3,4,8,6
1,,9,,5,9
-1,,3,4,5,6
1,2,0,4,5,6
Estou usando o OpenOffice, mas demora cerca de cinco cliques para desativar o comportamento padrão de citar todos os campos.
Gostaria de encontrar algo leve e fácil de usar que permita a inserção / exclusão de dados e a classificação baseada em colunas.
Para o vim, existe um bom plugin csv.vim .
Eu sei o que você quer dizer sobre {Libre, Open} Office. TBH, eu nunca encontrei nada realmente bom no Linux que também é leve.
O "melhor" (sim, em citações irônicas) que encontrei até agora é um aplicativo java chamado csveditor muito limpa, mas não segue as melhores diretrizes de interface do usuário.
O java CsvEditors (por exemplo, csveditor , reCsvEditor ) pode valer a pena dar uma olhada
Você pode usar o gnumeric para esse fim. No meu sistema (Crunchbang) e com um arquivo tão pequeno como no seu exemplo, o leafpad consome cerca de 2M de RAM; gnumérico, 4M; e scalc (do LibreOffice), 34M. Gnumeric está claramente no lado mais leve e deve detectar seu separador corretamente ao abrir o arquivo.
Mas (existe um mas ...) o gnumeric não permite salvar o arquivo modificado sem passar por um obstáculo de menus. O que segue é um script BASH para corrigir isso. O script se baseia no xsel (um gerenciador de área de transferência de linha de comando leve) para colar o conteúdo da planilha modificada de volta em seu arquivo. Se originado (não executado), este script lhe dá acesso a duas funções, gn para abrir o arquivo em gnumeric:
gn filename
e gp para colar o conteúdo de volta no arquivo e fechar o gnumeric:
gp
(Pessoalmente, eu uso este script em meu .bashrc para ter as funções gn e gp disponíveis sempre que eu abro um terminal.)
#! /bin/bash
# once sourced by the shell, this script provides two functions:
# gn to open a file with gnumeric
# gp to update the file with gnumeric's selection
# requires grep, sed, awk, and the xsel utility
# name of the target file: used in gn () and gp ()
# ==================================================
gn_file=
# take note of target file and open it with gnumeric if not already opened
# ==================================================
gn () {
# sanity checks
if [[ -z $1 ]]; then
echo 'Usage: gn file'
return
fi
if ! [[ -f $1 && -r $1 ]]; then
echo "Cannot find/use $1"
return
fi
# yes, this is right; job report, if any, has "$gn_file" not expanded
if jobs -l | grep 'Running.* gnumeric "$gn_file"' > /dev/null; then
echo 'Already editing with gnumeric.'
return
fi
echo 'Once done, select the part of the spreadsheet you want to save,'
echo 'press Ctrl-C, go back to the command line, and type gp [ENTER].'
# do the job
gn_file=$1
gnumeric "$gn_file" &
}
# paste selection into target file and close gnumeric
# ==================================================
gp () {
# sanity checks
if [[ -z $gn_file || ! -f $gn_file ]]; then
echo 'Cannot find/use target file.'
return
fi
local gnumeric_job=$( jobs -l | grep 'Running.* gnumeric "$gn_file"' )
if [[ -z $gnumeric_job ]]; then
echo 'No gnumeric instance to paste from.'
return
fi
if [[ -z $( xsel -ob ) ]]; then
echo 'Nothing to paste.'
return
fi
local temp_file=$( mktemp "$PWD/temp.XXXXXX" )
# paste X selection (o = output, b = clipboard mode)
xsel -ob > "$temp_file"
# replace tabs to get a CSV file
local tab=$'\t'
sed --in-place "s/$tab/,/g" "$temp_file"
# must close gnumeric before updating file
local job_id=$( echo "$gnumeric_job" | awk '{print $2}' )
kill "$job_id"
mv --backup "$temp_file" "$gn_file"
echo "$gn_file updated."
}
Como o próprio script lhe dirá quando abrir seu arquivo com gnumeric, quando você terminar de editar, você deve selecionar a parte da planilha que deseja salvar antes de pressionar Ctr-C (para copiar esta parte para a área de transferência ). Voltando à linha de comando (Alt-Tab), entrar no gp atualizará seu arquivo com o conteúdo da área de transferência e fechará o gnumeric. Seus valores modificados não terão aspas ao seu redor, mas serão separados por guias. portanto, o script usa sed para substituir guias por vírgulas.
Eu descobri que esta é uma maneira eficiente de trabalhar em arquivos de dados CSV a partir da linha de comando. O script deve salvar o arquivo corretamente, desde que ele não contenha guias nos campos separados por vírgulas (o que parece ser o caso no exemplo de análise de dados).
Eu uso o DMcsvEditor . É rápido e leve e tem algumas opções úteis básicas.
Estou usando o phpstorm e tenho que lidar muito com arquivos CSV, e ele suporta editá-los em uma visão de tabela e funciona muito melhor que o plugin vim csv.vim ou a tablr do plugin atom.
O mesmo deve ser aplicado a outros editores, como o IntelliJ Idea, o Android Studio, o Pycharm e o RubyMine. Não é software livre, mas alguns de seus produtos têm edições comunitárias.
(Ainda não é perfeito como às vezes apenas mostra arquivos grandes demais.)
Sugiro plug-in tablr para o editor do Atom.
Não é a opção mais leve, mas consegue edições simples com o menor número de cliques.
Guardei o seu exemplo como test.csv e o abri com o LibreOffice sem problemas:
$ cat test.csv
This,is,data,with,a,header
2,2,3,4,,
1,,3,,6,6
,5,3,5,5,6
1,2,,,,
1,2,3,4,8,6
1,,9,,5,9
-1,,3,4,5,6
1,2,0,4,5,6
$ libreoffice test.csv
Eu peguei este diálogo e escolhi "vírgula" como separador:
EucliqueiemOKeentendi:
O que mais você precisa?
Tags csv ubuntu text-editors