Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

viewer .csv en console

32 réponses
Avatar
Kevin Denis
Bonjour,

comme je sais qu'il existe pleins de petits utilitaires en ligne
de commande méconnus, je me demandais s'il y en avait un qui
permettrait de voir des fichiers csv.

Souvent, on cat un .csv, et la largeur des champs des colonnes
fait que ça apparait un peu en vrac:

$ cat file.csv
Jour;nombre de hits;disponibilité;colonne D
Mercredi;8;N;Obiwan
;;;E
Jeudi;Non disponible;;;

et ce n'est pas super simple à lire
si on pouvait avoir:

$ supertool file.csv
Jour; nombre de hits; disponibilité; colonne D
Mercredi; 8; N; Obiwan
; ; ; E
Jeudi; Non disponible; ;

ça serait beaucoup plus pratique.

Une idée?
Merci
--
Kevin

10 réponses

1 2 3 4
Avatar
Dominique MICOLLET
Bonjour,

Francois Lafont wrote:
Oui mais si les champs eux-mêmes contiennent des espaces, ça ne va pas le
faire, c'est pourquoi ça aurait été sympa que la commande column elle-même
possède une option pour lui dire « affiche-moi la sortie avec le caractère
machin comme délimiteur de colonnes ». Enfin je trouve... :)



Ben là : l'option -s ne sert-elle pas à cela ?

Cordialement

Dominique
Avatar
Lucas Levrel
Le 12 octobre 2015, Dominique MICOLLET a écrit :
Francois Lafont wrote:
Oui mais si les champs eux-mêmes contiennent des espaces, ça ne va pas le
faire, c'est pourquoi ça aurait été sympa que la commande column elle-même
possède une option pour lui dire « affiche-moi la sortie avec le caractère
machin comme délimiteur de colonnes ». Enfin je trouve... :)



Ben là : l'option -s ne sert-elle pas à cela ?



Tu veux dire -o ?

-s, --separator separators
Specify possible table delimiters (default is whitespace).

-o, --output-separator separators
Specify table output delimiter (default is two whitespaces).

--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Avatar
Francois Lafont
On 12/10/2015 17:31, Lucas Levrel wrote:

Tu veux dire -o ?

-s, --separator separators
Specify possible table delimiters (default is whitespace).

-o, --output-separator separators
Specify table output delimiter (default is two whitespaces).



Ben vous avez de la chance, moi sur ma Debian Wheezy je n'ai pas cette
option « -o ». J'ai vérifié, ça n'est pas présent sur Debian Jessie non
plus (la commande étant issue du paquet bsdmainutils, en version 9.0.6
sur Jessie).

Si Kevin Denis a la chance de disposer de cette option, alors je lui
propose carrément ceci :

column -o '|' -n -s ';' -t /tmp/test.csv

Et il aura une sortie toute jolie. ;)

--
François Lafont
Avatar
Dominique MICOLLET
Bonjour,

Francois Lafont wrote:

On 12/10/2015 17:31, Lucas Levrel wrote:
Tu veux dire -o ?

-s, --separator separators
Specify possible table delimiters (default is whitespace).

-o, --output-separator separators
Specify table output delimiter (default is two
whitespaces).



Ben vous avez de la chance, moi sur ma Debian Wheezy je n'ai pas cette
option « -o ». J'ai vérifié, ça n'est pas présent sur Debian Jessie non
plus (la commande étant issue du paquet bsdmainutils, en version 9.0.6
sur Jessie).



Je confirme :-) je n'ai que l'option -s sur ma Jessie.

Si je comprends bien le manuel, cette option désigne le séparateur de
colonne en entrée et en sortie, sans le modifier. Pour le modifier, je
suggère d'employer tr.


Cordialement

Dominique
Avatar
Damien Wyart
> > -s, --separator separators
> > Specify possible table delimiters (default is whitespace).

> > -o, --output-separator separators
> > Specify table output delimiter (default is two
> > whitespaces).

> Ben vous avez de la chance, moi sur ma Debian Wheezy je n'ai pas
> cette option « -o ». J'ai vérifié, ça n'est pas présent sur Debian
> Jessie non plus (la commande étant issue du paquet bsdmainutils, en
> version 9.0.6 sur Jessie).



* Dominique MICOLLET in fr.comp.os.unix:
Je confirme :-) je n'ai que l'option -s sur ma Jessie.



En fait, il y a la version BSD (empaquetée dans bsdmainutils) et la
version d'util-linux (non empaquetée par Debian). Dans d'autres
distributions, c'est la version d'util-linux qui est fournie.

Je n'ai pas trouvé beaucoup d'informations à ce sujet :

http://marc.info/?t8831137800001&r=1&w=2
https://askubuntu.com/questions/622889/why-ubuntu-15-04-is-using-old-binaries
https://anonscm.debian.org/cgit/collab-maint/pkg-util-linux.git/commit/debian/bsdutils.install?idÉd3ad2ec2b3c5922efe4e8ac0c0895417331303

--
DW
Avatar
Francois Lafont
On 13/10/2015 08:29, Dominique MICOLLET wrote:

Je confirme :-) je n'ai que l'option -s sur ma Jessie.

Si je comprends bien le manuel, cette option désigne le séparateur de
colonne en entrée et en sortie, sans le modifier.



Non, seulement en entrée, et en sortie ça sera l'espace le délimiteur
de colonnes (tu peux faire le test avec le csv d'exemple donné par le
PO).

Pour le modifier, je suggère d'employer tr.



Comme je disais dans un message précédent, ça ne fonctionnera pas si
au moins un champ contient un espace (ce qui est le cas dans le cvs
d'exemple donné par le PO).


--
François Lafont
Avatar
Dominique MICOLLET
Bonjour,

Francois Lafont wrote:
Comme je disais dans un message précédent, ça ne fonctionnera pas si
au moins un champ contient un espace (ce qui est le cas dans le cvs
d'exemple donné par le PO).



Je ne comprends pas votre remarque : dans l'exemple du PO, le séparateur est
un ';'

Donc
tr ';' 't' | expand --tabs
fonctionne comme votre solution basée sur column.
Incidemment, je ne prétends pas que ma solution soit meilleure que la vôtre.

Si on veut conserver les ';' il faut :

sed 's/;/t;/g' | expand --tabs

Cordialement

Dominique
Avatar
Francois Lafont
On 13/10/2015 11:40, Dominique MICOLLET wrote:

Je ne comprends pas votre remarque : dans l'exemple du PO, le séparateur est
un ';'

Donc
tr ';' 't' | expand --tabs
fonctionne comme votre solution basée sur column.



Heu, du coup, c'est moi qui ne suis pas sûr de vous comprendre. ;)

Est-ce que vous pourriez fournir une commande *complète* qui part
du fichier csv du PO (qui se trouve dans le premier message de se
fil), qui utilise les commandes "column" et "tr" donc et qui affiche
en sortie le csv de manière jolie avec pour délimiteur de colonnes
le caractère « | » par exemple ?

Car c'est là où j'en suis resté. Je disais qu'avec "column" la
sortie utilisera *forcément* l'espace pour délimiter les colonnes
et vous me disiez qu'on pouvait s'en sortir avec "tr", chose qui
ne me semble pas possible sauf si vous arrivez à me fournir
l'exemple complet demandé ci-dessus.

Je pense qu'après cela, on sera forcément sur la même longueur
d'onde (et je ne prétends pas avoir raison bien sûr, il m'arrive
assez souvent de passer à côté de choses simples). ;)

--
François Lafont
Avatar
Francois Lafont
On 13/10/2015 12:08, Francois Lafont wrote:

Est-ce que vous pourriez fournir une commande *complète* qui part
du fichier csv du PO (qui se trouve dans le premier message de se
fil), qui utilise les commandes "column" et "tr" donc et qui affiche
en sortie le csv de manière jolie avec pour délimiteur de colonnes
le caractère « | » par exemple ?



Juste histoire d'être bien clair, je reformule explicitement.
Le fichier csv du PO est ceci :

------------------------------------------------
~$ cat /tmp/test.csv
Jour;nombre de hits;disponibilité;colonne D
Mercredi;8;N;Obiwan
;;;E
Jeudi;Non disponible;;;
------------------------------------------------

Et je proposai au PO cette solution :

------------------------------------------------
~$ column -n -s ';' -t /tmp/test.csv
Jour nombre de hits disponibilité colonne D
Mercredi 8 N Obiwan
E
Jeudi Non disponible
------------------------------------------------

où je déplorerai le fait que la sortie utilisait forcement
l'espace pour délimiter les colonnes. Et donc par exemple,
il me semblait impossible d'avoir en sortie ceci (que je
trouve au passage davantage lisible) :

------------------------------------------------
Jour |nombre de hits |disponibilité|colonne D
Mercredi |8 |N |Obiwan
| | |E
Jeudi |Non disponible | |
------------------------------------------------

Or, si j'ai bien compris vos remarques, on pourrait lever cette
limitation en rusant avec la commande "tr". C'est à ce niveau
que je ne vois pas comment c'est possible. Du coup, une commande
complète serait la bienvenue. ;)

--
François Lafont
Avatar
Dominique MICOLLET
Bonjour,

Francois Lafont wrote:
On 13/10/2015 12:08, Francois Lafont wrote:


...
complète serait la bienvenue. ;)



J'ai effectivement mal compris le cahier des charges et le fonctionnement de
/column/ : j'ai cru que l'option -s définissait le séparateur en entrée ET
en sortie.

Donc /tr/ ne convient pas. Il faut effectivement disposer de l'option -o de
/column/ ou employer la solution /sed/ que j'ai proposée auparavant.

Désolé pour le bruit.

Cordialement

Dominique
1 2 3 4