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)
À 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.
$ 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
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
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
Pour surmonter ce comportement, utilisez -n
drapeau.
$ column -t -s ":" -n /etc/passwd # Only on Debian/Ubuntu
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
À 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
À 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
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
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
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.
Nous sommes reconnaissants de votre soutien sans fin.
.