Si j'ai un fichier csv, existe-t-il un moyen rapide en bash d'imprimer le contenu d'une seule colonne ? On peut supposer en toute sécurité que chaque ligne a le même nombre de colonnes, mais le contenu de chaque colonne aurait une longueur différente.
Réponses
Trop de publicités?La manière la plus simple que j'ai pu trouver pour accomplir cela a été d'utiliser simplement csvtool. J'avais d'autres cas d'utilisation également pour utiliser csvtool et il peut gérer correctement les guillemets ou délimiteurs s'ils apparaissent dans les données de la colonne elle-même.
csvtool format '%(2)\n' input.csv
Remplacer 2 par le numéro de colonne permettra d'extraire efficacement les données de la colonne que vous recherchez.
Je pense que le plus simple est d'utiliser csvkit :
Obtient la 2ème colonne : csvcut -c 2 file.csv
Cependant, il y a aussi csvtool, et probablement d'autres outils csv bash disponibles :
sudo apt-get install csvtool
(pour les systèmes basés sur Debian)
Cela renverrait une colonne avec la première ligne ayant 'ID' dedans : csvtool namedcol ID csv_file.csv
Cela renverrait la quatrième ligne : csvtool col 4 csv_file.csv
Si vous voulez supprimer la ligne d'en-tête :
csvtool col 4 csv_file.csv | sed '1d'
- Réponses précédentes
- Plus de réponses