web-dev-qa-db-ja.com

UbuntuでのCSVファイルの編集

Ubuntuで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

私はOpenOfficeを使用していますが、すべてのフィールドを引用するデフォルトの動作をオフにするのに約5クリックかかります。

データの挿入/削除、および列ベースのソートを可能にする軽量で使いやすいものを見つけたいと思います。

9
Andrew Wood

Vimには、Niceプラグイン csv.vim があります。

3
ott--

この目的のためにgnumericを使用する場合があります。私のシステム(Crunchbang)で、ファイルが例のように小さい場合、leafpadは約2MのRAMを消費します。数値、4M; scalc(LibreOfficeから)、34M。 Gnumericは明らかに軽量化の端にあり、ファイルを開くときに区切り文字を正しく検出するはずです。

しかし(しかし、ありますが...)gnumericでは、メニューのハードルを通過せずに、変更されたファイルを保存できません。以下は、これを修正するBASHスクリプトです。スクリプトは、xsel(軽量のコマンドラインクリップボードマネージャー)を使用して、変更されたスプレッドシートのコンテンツをファイルに貼り付けます。 sourced(実行されない)の場合、このスクリプトを使用すると、ファイルをgnumericで開くgnという2つの関数にアクセスできます。

gn filename

gpを使用して、コンテンツをファイルに貼り付け、gnumericを閉じます。

gp

(個人的には、このスクリプトを.bashrcに入れて、ターミナルを開くたびにgn関数とgp関数を使用できるようにします。)

#! /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."
}

スクリプトがgnumericでファイルを開くと通知されるので、編集が完了したら、Ctr-Cを押す前に、スプレッドシートの保存する部分を選択する必要があります(この部分をクリップボードにコピーするには)。コマンドライン(Alt-Tab)に戻り、gpと入力すると、ファイルがクリップボードの内容で更新され、gnumericが閉じます。変更した値は引用符で囲まれませんが、タブで区切られます。したがって、スクリプトはsedを使用してタブをコンマで置き換えます。

これは、コマンドラインからCSVデータファイルを操作する効率的な方法であることがわかりました。スクリプトは、コンマで区切られたフィールド内にタブが含まれていない限り、ファイルを正しく保存する必要があります(データ分析の例ではそうであるようです)。

2

Java CsvEditors(例 csveditorreCsvEditor )は一見の価値があるかもしれません)

2
Bruce Martin

{Libre、Open} Officeの意味がわかります。 TBH、私はLinuxで本当に軽量で軽量なものを見つけたことはありません。

私がこれまでに見つけた「最高」(はい、皮肉な引用符で)はJava呼び出されるアプリ csveditor かなりきれいですが、実際には従いません)最高のUIガイドライン。

1
Rich Homolka

私は tablrプラグイン Atomエディタ用です。

これは最も軽量なオプションではありませんが、最小限のクリックで簡単な編集を実現します。

enter image description here

0
Vanuan

私はphpstormを使用しており、CSVファイルを大量に処理する必要があります テーブルビューでのファイルの編集をサポートしています そして、vimプラグインよりもはるかに優れたパフォーマンス csv.vim またはatom plugin tablr。

Screenshot of table view

同じことは、他のエディター、つまりIntelliJ Idea、Android Studio、Pycharm、およびRubyMineにも当てはまります。これはフリーソフトウェアではありませんが、一部の製品にはコミュニティエディションがあります。

(ただし、ファイルが大きすぎるというエラーが表示される場合があるため、完全ではありません。)

0
k0pernikus

DMcsvEditor を使用します。高速かつ軽量で、いくつかの基本的な便利なオプションがあります。

0