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クリックかかります。
データの挿入/削除、および列ベースのソートを可能にする軽量で使いやすいものを見つけたいと思います。
Vimには、Niceプラグイン csv.vim があります。
この目的のために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データファイルを操作する効率的な方法であることがわかりました。スクリプトは、コンマで区切られたフィールド内にタブが含まれていない限り、ファイルを正しく保存する必要があります(データ分析の例ではそうであるようです)。
Java CsvEditors(例 csveditor 、 reCsvEditor )は一見の価値があるかもしれません)
{Libre、Open} Officeの意味がわかります。 TBH、私はLinuxで本当に軽量で軽量なものを見つけたことはありません。
私がこれまでに見つけた「最高」(はい、皮肉な引用符で)はJava呼び出されるアプリ csveditor かなりきれいですが、実際には従いません)最高のUIガイドライン。
私はphpstormを使用しており、CSVファイルを大量に処理する必要があります テーブルビューでのファイルの編集をサポートしています そして、vimプラグインよりもはるかに優れたパフォーマンス csv.vim またはatom plugin tablr。
同じことは、他のエディター、つまりIntelliJ Idea、Android Studio、Pycharm、およびRubyMineにも当てはまります。これはフリーソフトウェアではありませんが、一部の製品にはコミュニティエディションがあります。
(ただし、ファイルが大きすぎるというエラーが表示される場合があるため、完全ではありません。)
DMcsvEditor を使用します。高速かつ軽量で、いくつかの基本的な便利なオプションがあります。