Ich arbeite mit CSV-Dateien und muss manchmal schnell den Inhalt einer Zeile oder Spalte über die Befehlszeile überprüfen. In vielen Fällen cut
, head
, tail
, und Freunde werden die Arbeit erledigen; Schnitt kann jedoch nicht leicht mit Situationen umgehen wie
"this, is the first entry", this is the second, 34.5
Hier ist das erste Komma Teil des ersten Feldes, cut -d, -f1
stimmt aber nicht überein. Bevor ich selbst eine Lösung schrieb, fragte ich mich, ob jemand von einem guten Werkzeug wusste, das es für diesen Job bereits gibt. Zumindest muss es in der Lage sein, mit dem obigen Beispiel umzugehen und eine Spalte aus einer CSV-formatierten Datei zurückzugeben. Weitere wünschenswerte Funktionen sind die Möglichkeit, Spalten basierend auf den in der ersten Zeile angegebenen Spaltennamen auszuwählen, Unterstützung für andere Anführungszeichenstile und Unterstützung für durch Tabulatoren getrennte Dateien.
Wenn Sie kein solches Tool kennen, aber Vorschläge zur Implementierung eines solchen Programms in Bash, Perl oder Python oder anderen gängigen Skriptsprachen haben, stören mich solche Vorschläge nicht.
quelle
Ich bin wahrscheinlich ein bisschen zu spät, aber es gibt noch ein anderes erwähnenswertes Tool: csvkit
http://csvkit.readthedocs.org/
Es hat eine Menge Kommandozeilen-Tools, die:
cut
,grep
,sort
und andere, aber CSV-aware,quelle
Klingt nach einem Job für Perl mit
Text::CSV
.Informationen zum Umgang mit Spaltennamen finden Sie in der Dokumentation. Das Trennzeichen und der Anführungsstil können mit den Parametern auf eingestellt werden
new
. Siehe auchText::CSV::Separator
zum Erraten von Trennzeichen.quelle
(t)csh
Befehl funktioniert einwandfrei an der Eingabeaufforderung Ihrer Shell. Sie können diese Zeilen jederzeit miteinander verbinden, wenn Sie dies in einer Zeile möchten. Newline ist im Allgemeinen genau wie Leerzeichen in der Perl-Syntax wie in C.-e
eine implizite Schleife erzeugt).Ich habe csvfix gefunden, ein Befehlszeilentool erledigt die Arbeit gut. Sie müssen es jedoch selbst machen:
http://neilb.bitbucket.org/csvfix
Es erledigt alles, was Sie erwarten, sortiert / wählt Spalten aus, teilt / führt zusammen und viele, die Sie nicht gerne aus CSV-Daten und unterschiedlichen CSV-Daten SQL-Einfügungen generieren würden.
quelle
Wenn Sie die Befehlszeile verwenden möchten (und kein komplettes Programm erstellen möchten), möchten Sie Zeilen verwenden , ein Projekt, an dem ich arbeite: Es ist eine Befehlszeilenschnittstelle für tabellarische Daten, aber auch eine Python-Bibliothek, die Sie in Ihren Programmen verwenden können. Über die Befehlszeilenschnittstelle können Sie alle Daten in CSV, XLS, XLSX, HTML oder einem anderen von der Bibliothek unterstützten Tabellenformat mit einem einfachen Befehl hübsch ausdrucken:
Wenn das so
myfile.csv
ist:Dann drucken die Zeilen den Inhalt auf eine schöne Art und Weise:
Installieren
Wenn Sie ein Python-Entwickler sind und bereits
pip
auf Ihrem Computer installiert sind, starten Sie einfach in einer virtuellen Umgebung oder mitsudo
:Wenn Sie Debian verwenden:
Andere coole Funktionen
Formate konvertieren
Sie können zwischen allen unterstützten Formaten konvertieren:
Abfragen
Ja, Sie können SQL in eine CSV-Datei einfügen:
Über den
--output
Parameter ist es auch möglich, die Ausgabe der Abfrage in eine Datei anstelle von stdout zu konvertieren .Als Python-Bibliothek
Sie können Sie in Ihren Python-Programmen auch:
Hoffe es gefällt euch!
quelle
R ist nicht meine Lieblingsprogrammiersprache, aber es ist gut für solche Dinge. Wenn Ihre CSV-Datei ist
Innerhalb des R-Interpreter-Typs
In Bezug auf Ihre anderen Anforderungen finden Sie unter "Die Möglichkeit, Spalten basierend auf den in der ersten Zeile angegebenen Spaltennamen auszuwählen"
Für "Unterstützung für andere
quote
Anführungszeichen " siehe das Argument zu read.csv (und verwandte Funktionen).sep
Informationensep
zur "Unterstützung von durch Tabulatoren getrennten Dateien" finden Sie im Argument "read.csv" ( auf "\ t" gesetzt).Weitere Informationen finden Sie in der Online-Hilfe.
quelle
Rscript
(Teil der Basis-R-Distribution) oder das Addon-Paketlittler
. Sie können#!/usr/bin/env Rscript
oder ähnliches tun .Ich habe csvtool einmal benutzt und dadurch viel Zeit und Ärger gespart. Aufrufbar von der Shell.
http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=447
quelle
Miller ist ein weiteres nützliches Tool zum Bearbeiten von namensbasierten Daten, einschließlich CSV (mit Überschriften). Wenn Sie die erste Spalte einer CSV-Datei extrahieren möchten, ohne sich um den Namen zu kümmern, müssen Sie Folgendes tun
quelle
awk
, aber sehr DSV-fähig.Oder Sie könnten etwas Awk- Magie ausprobieren . Allerdings bin ich kein guter awk-Benutzer und kann nicht bestätigen, dass dies richtig funktioniert, und wie es geht.
quelle
Schauen Sie sich auch GNU Recutils und Crush-Tools an .
(über http://www.reddit.com/r/commandline/comments/mfcu9/anyone_using_gnu_recutils_is_it_outdatedsuperceded/ )
quelle
Um Python über die Befehlszeile zu verwenden, können Sie Pythonpy auschecken ( https://github.com/Russell91/pythonpy ):
quelle
versuchen Sie "csvtool" dieses Pakets, es ist ein praktisches Kommandozeilen-Tool für den Umgang mit CSV-Dateien
quelle
cissy führt auch die Befehlszeilen-CSV-Verarbeitung durch. Es ist in C (klein / leicht) mit RPM- und Deb-Paketen geschrieben, die für die meisten Distributionen verfügbar sind.
Mit dem Beispiel:
oder
oder
quelle
Es gibt auch eine Curry- Bibliothek zum Lesen / Schreiben von Dateien im CSV-Format: CSV .
quelle
Das Github Repo Structured Text Tools verfügt über eine nützliche Liste der relevanten Linux-Befehlszeilen-Tools. Im Abschnitt "Durch Trennzeichen getrennte Werte " sind mehrere CSV-fähige Tools aufgeführt, die die angeforderten Vorgänge direkt unterstützen.
quelle
Ich würde empfehlen, xsv - Ein schnelles CSV-Befehlszeilen-Toolkit, das in Rust ( Github ) geschrieben wurde.
Geschrieben von Ripgrep 's Autor.
Featured in Wie wir unsere CSV-Verarbeitung 142x schneller gemacht haben ( Reddit-Thread ).
quelle
Eines der besten Tools ist Miller ( http://johnkerl.org/miller/doc/index.html ). Es ist wie awk, sed, cut, join und sort für mit Namen indizierte Daten wie CSV, TSV und tabellarisches JSON.
Zum Beispiel
gibt Ihnen
Wenn Sie einen TSV wollen
gibt Ihnen (es ist möglich, den Header zu entfernen)
Wenn Sie die erste und dritte Spalte möchten, ändern Sie deren Reihenfolge
gibt Ihnen
quelle
Wenn Sie ein visuelles / interaktives Tool im Terminal wünschen, empfehle ich VisiData von ganzem Herzen.
Es verfügt über Frequenztabellen (siehe oben), Pivot, Schmelzen, Streudiagramme, Filtern / Berechnen mit Python und mehr.
Sie können csv-Dateien so übergeben
vd hello.csv
Es gibt csv spezifische Optionen:
--csv-dialect
,--csv-delimiter
,--csv-quotechar
, und--csv-skipinitialspace
für die Feinabstimmung von csv - Dateien verarbeitet werden .quelle
Eine gute Lösung
quelle