UbuntuでのCSVファイルの編集[終了]


9

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クリックかかります。

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

回答:


3

vimには、素晴らしいプラグインcsv.vimがあります。


私は代わりのプラグインを探しています。csvが「大きい」場合、パフォーマンスに大きな問題があります。現在、500行のcsvでループします。
k0pernikus


2

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

しかし(しかしありますが...)gnumericでは、メニューのハードルを通過せずに、変更したファイルを保存できません。以下は、これを修正するBASHスクリプトです。スクリプトは、xsel(軽量のコマンドラインクリップボードマネージャー)を使用して、変更されたスプレッドシートのコンテンツをファイルに貼り付けます。ソースが提供されている(実行されていない)場合、このスクリプトを使用すると、ファイルを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と入力すると、ファイルがクリップボードの内容で更新され、numericが閉じます。変更した値は引用符で囲まれませんが、タブで区切られます。したがって、スクリプトはsedを使用してタブをコンマで置き換えます。

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


1

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

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



0

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

テーブルビューのスクリーンショット

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

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



-1

私はあなたの例をtest.csvとして保存し、それをLibreOfficeでまったく問題なく開きました:

$ 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 

次に、このダイアログを取得し、区切り文字として「カンマ」を選択しました。

ここに画像の説明を入力してください

私は「OK」をクリックしてこれを得ました:

ここに画像の説明を入力してください

さらに何が必要ですか?


openofficeで私が抱えている問題は、セパレーターオプションが予告なしに変更されることがあり、ファイルが引用区切り文字で保存されることです(OOはデフォルトを強制しないようです)。ファイルを保存するのではなく、ファイルをロードする際には、より起こります。
アンドリュー・ウッド

それは確かにOpenOfficeで可能です、あなたは正しいです。
アンドリューウッド

1
「これ以上必要なもの」に関しては、私は@AndrewWoodの状況にいて、通常はそれほど必要ありません:)私は以前に個人的にこの質問をしました。LibreOfficeが大好きです。いつも使っています。しかし、RAMを大量に消費せず、邪魔にならない単純なCSVエディタが必要な場合もあります。
Rich Homolka 2013

@RichHomolka、正直なところ、私はgawk:) を使用します
terdon

パフォーマンス。csvが少し大きくなると、それらをロードするだけでは永久に時間がかかり、OpenOffice内でそのようなファイルを編集することすらしなくなりました。
k0pernikus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.