Quelqu'un connaît-il un visualiseur CSV en ligne de commande pour Linux/OS X? Je pense à quelque chose comme less
mais cela espère les colonnes de manière plus lisible. (Cela ne me poserait aucun problème si je l’ouvrais avec OpenOffice Calc ou Excel, mais c’est beaucoup trop puissant pour regarder les données comme il me faut.) Avoir le défilement horizontal et vertical serait génial.
Vous pouvez également utiliser ceci:
column -s, -t < somefile.csv | less -#2 -N -S
column
est un programme unix standard très pratique: il trouve la largeur appropriée de chaque colonne et affiche le texte sous forme de tableau bien mis en forme.
Remarque: chaque fois que vous avez des champs vides, vous devez y insérer une sorte d’espace réservé, sinon la colonne est fusionnée avec les colonnes suivantes. L'exemple suivant montre comment utiliser sed
pour insérer un espace réservé:
$ cat data.csv
1,2,3,4,5
1,,,,5
$ sed 's/,,/, ,/g;s/,,/, ,/g' data.csv | column -s, -t
1 2 3 4 5
1 5
$ cat data.csv
1,2,3,4,5
1,,,,5
$ column -s, -t < data.csv
1 2 3 4 5
1 5
$ sed 's/,,/, ,/g;s/,,/, ,/g' data.csv | column -s, -t
1 2 3 4 5
1 5
Notez que la substitution de ,,
par , ,
est effectuée deux fois. Si vous le faites une seule fois, 1,,,4
deviendra 1, ,,4
puisque la deuxième virgule est déjà appariée.
Vous pouvez installer csvtool
(sur Ubuntu) via
Sudo apt-get install csvtool
puis lancez:
csvtool readable filename | view -
Cela rend Nice et joli à l'intérieur d'une instance vim en lecture seule, même si vous avez des cellules avec des valeurs très longues.
Regardez csvkit . Il fournit un ensemble d'outils qui adhèrent à la philosophie UNIX (ce qui signifie qu'ils sont petits, simples, à but unique et peuvent être combinés).
Voici un exemple qui extrait les dix villes les plus peuplées d’Allemagne de la libre base de données Maxmind World Cities et affiche le résultat dans un format lisible par la console:
$ csvgrep -e iso-8859-1 -c 1 -m "de" worldcitiespop | csvgrep -c 5 -r "\d+"
| csvsort -r -c 5 -l | csvcut -c 1,2,4,6 | head -n 11 | csvlook
-----------------------------------------------------
| line_number | Country | AccentCity | Population |
-----------------------------------------------------
| 1 | de | Berlin | 3398362 |
| 2 | de | Hamburg | 1733846 |
| 3 | de | Munich | 1246133 |
| 4 | de | Cologne | 968823 |
| 5 | de | Frankfurt | 648034 |
| 6 | de | Dortmund | 594255 |
| 7 | de | Stuttgart | 591688 |
| 8 | de | Düsseldorf | 577139 |
| 9 | de | Essen | 576914 |
| 10 | de | Bremen | 546429 |
-----------------------------------------------------
Csvkit est indépendant de la plate-forme car il est écrit en Python.
Tabview: poids léger python visionneur de fichiers CSV en ligne de commande (ainsi que d'autres données tabulaires Python, comme une liste de listes) est ici sur Github
Si vous êtes amateur, utilisez le plugin CSV , qui est juste magnifique .
Le paquet nodejs tecfu/tty-table peut être installé globalement pour faire ceci:
apt-get install nodejs
npm i -g tty-table
cat data.csv | tty-table
Il peut également gérer les flux.
Pour plus d'informations, voir le docs pour l'utilisation du terminal ici .
Mon projet FOSS CSVfix vous permet d'afficher des fichiers CSV au format de tableau "Art ASCII".
La réponse d'Ofri vous donne tout ce que vous avez demandé. Mais .. si vous ne voulez pas vous souvenir de la commande, vous pouvez ajouter ceci à votre ~/.bashrc (ou équivalent):
csview()
{
local file="$1"
sed "s/,/\t/g" "$file" | less -S
}
C'est exactement la même chose que la réponse d'Ofri, sauf que je l'ai encapsulée dans une fonction Shell et que j'utilise l'option less -S
pour arrêter l'encapsulation des lignes (rend less
se comporte davantage comme un bureau/oocalc).
Ouvrez un nouveau shell (ou tapez source ~/.bashrc
dans votre shell actuel) et exécutez la commande en utilisant:
csview <filename>
xsv est plus qu'un spectateur. Je le recommande pour la plupart des tâches CSV sur la ligne de commande, en particulier lorsqu'il s'agit de grands ensembles de données.
J'ai utilisé la réponse de pisswillis pendant longtemps.
csview()
{
local file="$1"
sed "s/,/\t/g" "$file" | less -S
}
Mais ensuite, j'ai combiné le code que j'ai trouvé sur http://chrisjean.com/2011/06/17/view-csv-data-from-the-command-line qui fonctionne mieux pour moi:
csview()
{
local file="$1"
cat "$file" | sed -e 's/,,/, ,/g' | column -s, -t | less -#5 -N -S
}
La raison pour laquelle cela fonctionne mieux pour moi est qu'il gère mieux les colonnes larges.
tblless
dans le package Tabulator enveloppe la commande unix column
et aligne également les colonnes numériques.
Voici une option (probablement trop) simple:
sed "s/,/\t/g" filename.csv | less
En utilisant TxtSushi vous pouvez faire:
csvtopretty filename.csv | less -S
J'ai écrit ce fichier csv_view.sh pour formater les CSV à partir de la ligne de commande. Le fichier entier est lu pour déterminer la largeur optimale de chaque colonne (requiert Perl, en supposant qu'il n'y ait pas de virgule dans les champs, mais aussi en utilise moins):
#!/bin/bash
Perl -we '
sub max( @ ) {
my $max = shift;
map { $max = $_ if $_ > $max } @_;
return $max;
}
sub transpose( @ ) {
my @matrix = @_;
my $width = scalar @{ $matrix[ 0 ] };
my $height = scalar @matrix;
return map { my $x = $_; [ map { $matrix[ $_ ][ $x ] } 0 .. $height - 1 ] } 0 .. $width - 1;
}
# Read all lines, as arrays of fields
my @lines = map { s/\r?\n$//; [ split /,/ ] } ;
my $widths =
# Build a pack expression based on column lengths
join "",
# For each column get the longest length plus 1
map { 'A' . ( 1 + max map { length } @$_ ) }
# Get arrays of columns
transpose
@lines
;
# Format all lines with pack
map { print pack( $widths, @$_ ) . "\n" } @lines;
' $1 | less -NS
Encore un autre outil de manipulation CSV multifonctionnel (et pas seulement): Miller . D'après sa propre description, il ressemble à awk, sed, couper, joindre et trier des données indexées telles que CSV, TSV et JSON tabulaire. (lien vers le référentiel github: https://github.com/johnkerl/miller )
J'ai créé tablign à ces fins (et à d'autres). Installer avec
[Sudo -H] pip3 install tablign
et
$ cat test.csv
Header1,Header2,Header3
Pizza,Artichoke dip,Bob's Special of the Day
BLT,Ham on rye with the works,
$ tablign test.csv
Header1 , Header2 , Header3
Pizza , Artichoke dip , Bob's Special of the Day
BLT , Ham on rye with the works ,
Fonctionne également si les données sont séparées par autre chose que des virgules. Plus important encore, il préserve les délimiteurs afin que vous puissiez également l'utiliser pour styliser vos tables ASCII sans sacrifier votre [Markdown, CSV, LaTeX] syntaxe.
Tabview est vraiment bon. Travaillé avec plus de 200 MB de fichiers bien affichés qui étaient bogués avec LibreOffice ainsi que le plugin CSV dans gvim.
La version d'Anaconda est disponible ici: https://anaconda.org/bioconda/tabview
Il y a ce court script de ligne de commande en python: https://github.com/rgrp/csv2ascii/blob/master/csv2ascii.py
Il suffit de télécharger et de placer dans votre chemin. L'utilisation est comme
csv2ascii.py [options] csv-file-path
Convertissez le fichier csv de csv-file-path
en un formulaire ascii renvoyant le résultat sur la sortie standard. Si csv-file-path
= '-', lisez stdin.
Les options:
-h, --help affiche ce message d’aide et quitte -w WIDTH, --width = WIDTH Largeur de la sortie ascii -c COLUMNS, - -columns = COLUMNS N'afficher que ce nombre de colonnes
J'ai écrit un script, viewtab , dans Groovy uniquement à cette fin. Vous l'invoquez comme:
viewtab filename.csv
Il s’agit en fait d’une feuille de calcul très légère pouvant être appelée à partir de la ligne de commande, gérant les fichiers CSV et séparés par des tabulations, pouvant lire TRÈS gros fichiers sur lesquels Excel et Numbers s’étouffent, et est très rapide. Ce n'est pas une ligne de commande dans le sens où il ne s'agit que de texte, mais il est indépendant de la plate-forme et conviendra probablement à de nombreuses personnes à la recherche d'une solution au problème de l'inspection rapide de nombreux ou de gros fichiers CSV dans un environnement en ligne de commande. .
Le script et comment l'installer sont décrits ici:
http://bayesianconspiracy.blogspot.com/2012/06/quick-csvtab-file-viewer.html