Avez-vous déjà été dans une situation pour travailler avec des fichiers CSV et produire une sortie au format tabulaire structuré? Récemment, je travaillais avec le nettoyage des données sur un fichier qui n’est pas dans une structure appropriée. Il y a tellement d’espaces entre chaque colonne que je dois le convertir au format CSV pour le pousser dans la base de données. Après le nettoyage et la création de la sortie au format CSV, ma sortie n’est pas visuellement attrayante pour vérifier l’intégrité des données dans le fichier CSV. C’est le moment où la commande «Colonne» me sera utile.

Selon la page de manuel, le colonne commande « listes en colonnes». En termes simples, le colonne est un utilitaire simple qui peut formater votre sortie en un colonne format (lignes et champs) basé sur la structure de votre fichier source. Le colonne La commande fait partie du package util-linux.

Un point important à noter ici est colonne la commande se comporte différemment dans Basé sur Debian et Distributions basées sur Rhel. La raison en est que la distribution basée sur Debian utilise «colonne » de bsdmainutils au lieu de util-linux. La version amont du colonne la commande est plus récente que la bsdmainutils paquet. Jetez un œil à rapport d’erreur pour en savoir plus.

$ dpkg -S $(which column)
Quelle Colonne
Quelle Colonne

À des fins de démonstration, j’utilise CentOS 7 et affichera différentes options entre Ubuntu et CentOS 7. Pour vérifier le colonne version exécutez la commande suivante. Cette commande affichera également le util-linux version du package.

$ column --version  # will not work in Debian/ubuntu

Vous pouvez également vérifier la version d’util-linux en exécutant les commandes ci-dessous.

Publicité
$ rpm -qa | grep -i util-linux   # Redhat,Centos,Fedora,Amazon Linux
$ dpkg -l | grep -i util-linux    # Ubuntu

Avant d’utiliser le colonne commande un bon point de départ sera la page de manuel et d’explorer ses options.

$ man column

Liste du contenu du fichier au format tabulaire

Le colonne la commande peut créer une table en passant le nom de fichier comme argument avec le -t drapeau. j’utilise / etc / passwd comme fichier d’entrée.

$ column -t /etc/passwd
Répertorier Le Contenu Des Fichiers Au Format Tableau
Répertorier Le Contenu Des Fichiers Au Format Tableau

En regardant l’image ci-dessus, vous pouvez penser que ce n’est pas ce à quoi nous nous attendions et le résultat peut sembler étrange. Oui! Vous avez raison. Colonnes considérer espace comme délimiteur par défaut lors de la création d’une table. Ce comportement peut être remplacé en passant un délimiteur personnalisé.

Délimètre personnalisé

Les délimiteurs personnalisés vous offrent un large éventail d’options avec lesquelles travailler. Pour créer un délimiteur personnalisé, utilisez -s drapeau suivi d’un délimiteur. Maintenant, nous allons utiliser “:” comme délimiteur pour diviser / etc / passwd déposer.

$ column -s ":"  -t /etc/passwd
Délimiteur
Délimiteur

Regardez l’image ci-dessus où le tableau est bien formaté et structuré. De util-linux option version 2.23 -s a été changé pour ne pas être gourmand.

Maintenant, exécutez la même commande dans Ubuntu et le résultat sera gourmand. Ceci est dû au fait colonne commande (bsdmainutils) sur Ubuntu traitera plusieurs mots adjacents comme un seul mot.

$ column -s ":"  -t /etc/passwd
Sortie Gourmande
Sortie Gourmande

Pour surmonter ce comportement, utilisez -n drapeau.

$ column -t -s ":" -n /etc/passwd             # Only on Debian/Ubuntu
Sortie Non Gourmande
Sortie Non Gourmande

Ignorer les lignes vides blanches dans la sortie du fichier

Lorsque vous avez des lignes vides dans votre fichier d’entrée, la commande de colonne l’ignore par défaut. Voir mon fichier d’entrée qui est au format CSV et j’ai ajouté une ligne vide entre chaque ligne. Créons maintenant une table comme nous l’avons fait auparavant avec ce fichier d’entrée.

$ column -t -s ";" dummy.txt
Ignorer Les Lignes Vides Pendant Que Les Lignes
Ignorer Les Lignes Vides Pendant Que Les Lignes

À partir de l’image ci-dessus, vous pouvez voir mon fichier d’entrée dummy.txt a des lignes vides et lorsque j’essaye de créer une table, les lignes vides sont ignorées.

Noter: Il s’agit du comportement par défaut pour les deux « bsdmainutils / util-linux« Variante de la colonne commander. Mais colonne (bsdmainutils) a la possibilité de remplacer ce comportement en passant -e drapeau.

$ column -e -t -s "," dummy.txt        # Only on Debian/Ubuntu
Fichier Des Lignes Blanches
Fichier Des Lignes Blanches

À partir de l’image ci-dessus, vous pouvez voir que le tableau est formaté correctement et que les lignes vides ne sont pas ignorées.

Séparateur de sortie de fichier

Par défaut, deux espaces blancs seront utilisés comme séparateurs de sortie. Ce comportement peut être remplacé en passant -o drapeau. Vous n’aurez pas d’option de séparateur de sortie disponible dans le colonne (bsdmainutils).

$ column -t -s "," -o "||" dummy.txt	# Only on Rhel based distro
Séparateur De Sortie De Fichier
Séparateur De Sortie De Fichier

Convertir les lignes de fichiers en colonnes

En utilisant le -x l’indicateur, vous pouvez convertir des lignes en colonnes. Ce comportement est le même dans les deux Rhel et Ubuntu variantes de la commande de colonne. C’est une fonctionnalité très utile lorsque vous devez saisir un certain champ à travers le awk ou colonne, puis convertissez-le en en-tête de votre fichier CSV.

$ column -x fillcols.txt
Convertir Les Lignes De Fichiers En Colonnes
Convertir Les Lignes De Fichiers En Colonnes

Lorsque vous exécutez le colonne commande sans utiliser d’indicateur, le comportement sera le même que celui de passer -x drapeau.

Rechercher la taille de la colonne

Le colonne utilise une variable d’environnement ($COLUMNS) pour connaître la taille de votre terminal et en fonction de la taille, utilisez le commande echo, la taille de la table sera affichée dans le terminal.

$ echo $COLUMNS

Regardez l’image ci-dessous. Au départ, j’ai redimensionné mon terminal pour avoir $COLUMNS la taille définie sur 60 et a exécuté la commande de colonne. Encore une fois, j’ai redimensionné mon terminal pour avoir $COLUMNS la taille définie sur 114 et a exécuté à nouveau la commande de colonne. Vous pouvez voir la différence dans la façon dont la colonne imprime le tableau lorsque nous redimensionnons le terminal.

$ column -t -s ":" /etc/passwd | head 5
Redimensionner Les Tailles Des Colonnes
Redimensionner Les Tailles Des Colonnes

Voilà pour cet article. Si vous avez des commentaires, veuillez les fournir dans la section des commentaires.

Si vous appréciez ce que nous faisons ici sur TecMint, vous devriez considérer:

TecMint est le site communautaire à la croissance la plus rapide et le plus fiable pour tout type d’articles, de guides et de livres Linux sur le Web. Des millions de personnes visitent TecMint! pour rechercher ou parcourir les milliers d’articles publiés disponibles GRATUITEMENT à tous.

Si vous aimez ce que vous lisez, pensez à nous acheter un café (ou 2) en guise de remerciement.

Soutenez-Nous

Nous sommes reconnaissants de votre soutien sans fin.

.

Rate this post
Publicité
Article précédentBlack Clover: Top 10 des ouvertures, classé
Article suivantPirate Monitor quitte le recours collectif contre le piratage de YouTube, Maria Schneider persiste * TechTribune France
Avatar De Violette Laurent
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici