Sie können zu diesem Zweck gnumerisch verwenden. Auf meinem System (Crunchbang) und mit einer Datei, die so klein ist wie in Ihrem Beispiel, verbraucht Leafpad etwa 2 MB RAM. gnumerisch, 4 M; und Scalc (von LibreOffice), 34M. Gnumeric befindet sich eindeutig am leichtgewichtigen Ende und sollte Ihr Trennzeichen beim Öffnen der Datei korrekt erkennen.
Aber (es gibt ein aber ...) Gnumeric lässt Sie die geänderte Datei nicht speichern, ohne eine Hürde von Menüs zu durchlaufen. Was folgt, ist ein BASH-Skript, um dies zu beheben. Das Skript basiert auf xsel (einem einfachen Befehlszeilen-Manager für Befehlszeilen), um den geänderten Tabelleninhalt wieder in Ihre Datei einzufügen. Wenn sourced (nicht ausgeführt), gibt das Skript , das Sie zwei Funktionen zuzugreifen, gn die Datei in gnumeric zu öffnen:
gn filename
und gp, um den Inhalt wieder in die Datei einzufügen und gnumeric zu schließen:
gp
(Ich persönlich beziehe dieses Skript in meiner .bashrc-Datei, damit die Funktionen gn und gp verfügbar sind, wenn ich ein Terminal öffne.)
#! /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."
}
Wie das Skript selbst beim Öffnen Ihrer Datei mit gnumerisch anzeigt, müssen Sie nach Abschluss der Bearbeitung den Teil der Tabelle auswählen, den Sie speichern möchten, bevor Sie Strg-C drücken (um diesen Teil in die Zwischenablage zu kopieren). Wenn Sie zur Befehlszeile (Alt-Tab) zurückkehren und gp eingeben, wird Ihre Datei mit dem Inhalt der Zwischenablage aktualisiert und gnumerisch geschlossen. Ihre geänderten Werte werden nicht in Anführungszeichen gesetzt, sondern durch Tabulatoren getrennt. Daher verwendet das Skript sed, um Tabulatoren durch Kommas zu ersetzen.
Ich habe festgestellt, dass dies eine effiziente Möglichkeit ist, CSV-Datendateien über die Befehlszeile zu bearbeiten. Das Skript sollte die Datei korrekt speichern, solange sie keine Tabulatoren in den durch Kommas getrennten Feldern enthält (was in Ihrem Beispiel für die Datenanalyse der Fall zu sein scheint).