Editando arquivos CSV no Ubuntu

8

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.

    
por Andrew Wood 13.02.2013 / 20:13

8 respostas

3

Para o vim, existe um bom plugin csv.vim .

    
por 27.05.2013 / 10:08
1

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.

    
por 13.02.2013 / 22:21
1

O java CsvEditors (por exemplo, csveditor , reCsvEditor ) pode valer a pena dar uma olhada

    
por 26.02.2013 / 07:09
1

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).

    
por 29.01.2017 / 01:55
0

Eu uso o DMcsvEditor . É rápido e leve e tem algumas opções úteis básicas.

    
por 27.05.2013 / 09:53
0

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.)

    
por 15.03.2016 / 18:00
0

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.

    
por 03.11.2018 / 16:58
-1

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?

    
por 13.02.2013 / 20:41