Guide d'utilisation de la commande cut sous Linux

La commande cut dans Linux est un puissant utilitaire de traitement de texte utilisé pour extraire des sections spécifiques de chaque ligne d’un fichier ou d’une entrée pipée. Elle ne modifie pas le fichier original mais lit simplement le contenu et affiche les portions désirées sur la sortie standard. Dans cet article, nous allons explorer l’objectif de la commande cut sous Linux et démontrer comment l’utiliser à travers des exemples pratiques du monde réel.
Comprendre la commande cut
La commande cut est un outil précieux pour quiconque travaille avec du texte structuré, permettant une manipulation et une extraction de données efficaces dans les systèmes de type Unix. Elle extrait des parties d’une ligne en fonction des positions de bytes, des positions de caractères, des délimiteurs ou des champs. Cela la rend particulièrement utile pour filtrer et organiser des données dans des scripts shell et des opérations en ligne de commande. Elle est également utile pour des tâches comme la récupération de colonnes à partir de fichiers CSV, le découpage de caractères ou l’analyse de fichiers de journal. Bien qu’elle soit couramment utilisée avec des fichiers, la commande cut peut également traiter la sortie d’autres commandes lorsqu’elle est utilisée dans un pipeline.
Syntaxe de base de la commande cut
La commande cut a une syntaxe très simple qui utilise des options et un nom de fichier. Voici comment cela fonctionne :
cut[OPTIONS][FICHIER]Ici, OPTIONS vous permet de contrôler comment la commande cut fonctionne. Vous pouvez choisir un séparateur de champ (comme une virgule), sélectionner certains champs, définir des plages de champs, ignorer les lignes sans le séparateur, etc. FICHIER est le fichier cible à partir duquel vous souhaitez extraire des données. La commande cut lira à partir de l’entrée standard si vous ne spécifiez pas de fichier. De plus, vous pouvez spécifier plusieurs fichiers ; dans ce cas, la commande cut les traitera comme un seul en combinant leurs contenus avant le traitement.
Options couramment utilisées
La commande cut vous permet d’extraire des parties spécifiques de texte à partir d’un fichier ou d’une entrée. Vous pouvez lui indiquer ce qu’il faut extraire à l’aide de différentes options, telles que les bytes, les caractères ou les champs, en définissant un séparateur spécifique (délimiteur). Voici les options courantes :
- -f ou –fields=LISTE : Sélectionne des champs spécifiques en fonction d’un délimiteur choisi.
- -b ou –bytes=LISTE : Extrait certains bytes de chaque ligne.
- -c ou –characters=LISTE : Récupère des caractères spécifiques de chaque ligne.
- -d ou –delimiter : Définit un délimiteur personnalisé au lieu du tab par défaut.
- –complement : Montre tout sauf les champs, bytes ou caractères sélectionnés.
- -s ou –only-delimited : Ignore les lignes qui n’ont pas le délimiteur. Par défaut, ces lignes sont incluses.
- –output-delimiter : Vous permet de choisir un délimiteur différent pour la sortie. Par défaut, cut utilise le même délimiteur que l’entrée.
Les options -f, -b et -c utilisent une LISTE pour définir ce qu’il faut extraire, comme des champs, des bytes ou des caractères. Vous pouvez spécifier les éléments suivants :
- Un seul nombre comme 2
- Plusieurs nombres séparés par des virgules, comme 1,3,5
- Une plage comme 2-4 (signifiant extraire de 2 à 4)
N-pour signifier de la position N à la fin-Mpour signifier du début jusqu’à la position M
Comment fonctionne la commande cut sous Linux
Passons en revue quelques exemples pratiques pour comprendre comment la commande cut fonctionne sous Linux. Pour cela, créez d’abord un fichier appelé “mte.csv” en utilisant la commande echo :
echo-e"empID,empName,empDesig\n101,Anees,Author\n102,Asghar,Manager\n103,Damian,CEO"> mte.csvVérifions le contenu du fichier en utilisant la commande cat :
cat mte.csv
Il est important de noter que la commande cut ne change pas le fichier, elle montre simplement la sortie sélectionnée en fonction de ce que vous demandez.
Extraction de données par caractères
Utilisez l’option -c avec la commande cut pour extraire des caractères par position :
cut-c1,8 mte.csvCette commande extrait le premier et le huitième caractère de chaque ligne :
Pour extraire des caractères entre des positions ou plages spécifiques, nous pouvons utiliser la commande cut comme suit :
cut-c1-8 mte.csvCette commande extrait les caractères entre la première et la huitième position de chaque ligne :
Extraction par byte
Nous pouvons utiliser l’option -b avec la commande cut pour extraire des bytes spécifiques de chaque ligne :
cut-b1-3 mte.csvCette commande extrait les trois premiers bytes de chaque ligne du fichier nommé mte.csv :
Extraction par champ (colonne)
Vous pouvez extraire un champ entier d’un fichier à l’aide de la commande cut. Pour ce faire, utilisez l’option -f avec -d, comme suit :
cut-d','-f2 mte.csvDans cette commande, -d',' définit le délimiteur à une virgule, et -f2 indique à cut d’extraire le deuxième champ de chaque ligne dans le fichier mte.csv :
Utilisation de délimiteurs personnalisés dans cut
La commande cut utilise un tab comme délimiteur par défaut. Cependant, si vos champs sont séparés par autre chose qu’un tab, utilisez -d pour définir le bon. Par exemple, nous pouvons obtenir le cinquième mot d’une phrase séparée par des espaces en utilisant le délimiteur -d comme suit :
echo"Hey! Geeks Welcome to Maketecheasier.com"|cut-d' '-f5Ignorer certains champs lors de l’extraction
Vous pouvez exclure des champs spécifiques lors de l’extraction de texte à partir d’un fichier en utilisant l’option --complement avec la commande cut. Cette option indique à la commande cut de produire tous les champs sauf les spécifiés :
cut-d','-f1 mte.csv --complementCette commande ignorera la première colonne et renverra le reste du contenu :
Changer le délimiteur par défaut dans la sortie
Par défaut, la commande cut préserve le délimiteur d’entrée dans la sortie lors de l’extraction de champs. Cependant, vous pouvez changer le délimiteur de sortie en utilisant l’option --output-delimiter lors de l’extraction basée sur des champs :
cut-d','-f1-3--output-delimiter='-' mte.csvCette commande utilise un tiret - comme séparateur dans la sortie :
Utilisation de cut avec d’autres commandes Linux utiles
Vous pouvez également utiliser cut avec d’autres commandes Linux en utilisant le symbole de pipeline. Par exemple, la commande suivante extrait les 5 premiers caractères de chaque ligne de la sortie de la commande who :
who|cut-c1-5Dans l’exemple suivant, nous utilisons la commande cut avec head pour afficher les deux premières lignes du fichier “mte.csv” et extraire uniquement les champs empName et empDesig :
head-n2 mte.csv |cut-d',' -f2,3Gestion des formats de données irréguliers avec la commande cut sous Linux
La commande cut fonctionne mieux lorsque les données sont bien organisées, avec le même délimiteur (comme une virgule ou un tab) séparant chaque partie. Mais si le fichier a des espaces inégaux ou des délimiteurs mélangés, cut peut ne pas bien fonctionner seul. Dans de telles situations, il est utile de nettoyer d’abord les données à l’aide de commandes comme tr ou sed pour s’assurer que cut peut extraire les bonnes parties.
Gestion des espaces supplémentaires
Considérez un fichier nommé “mteData.txt” où les champs sont séparés par plusieurs espaces, comme le montre ci-dessous :
cat mteData.txtPuisque cut s’attend à un seul délimiteur constant, nous pouvons simplifier l’espacement en utilisant tr avant d’appliquer cut :
cat mteData.txt |tr-s' '|cut-d' '-f1-2Cette commande lit le contenu de “mteData.txt”, utilise tr pour remplacer plusieurs espaces par un espace unique, puis utilise cut pour extraire les deux premiers champs séparés par un espace :
Gestion des délimiteurs mélangés
Si un fichier utilise une combinaison d’espaces et de virgules comme délimiteurs, nous pouvons normaliser le format avec sed. Par exemple, un fichier nommé “mteData1.txt” contient le contenu suivant :
cat mteData1.txtUtilisons la commande sed avec la commande cut pour remplacer tous les espaces par une virgule, puis extraire les premier et troisième champs séparés par des virgules :
sed's/ /,/g' mteData1.txt |cut-d',' -f1,3Conclusion
Dans cet article, nous avons exploré la commande cut sous Linux, une commande utile pour extraire des données de fichiers ou d’entrées pipées. Avec sa syntaxe simple, vous pouvez facilement obtenir des caractères, des bytes ou des champs en fonction d’un délimiteur. Nous avons également démontré comment utiliser la commande cut avec d’autres commandes comme tr, sed et head pour gérer des données désordonnées et simplifier la sortie. Que vous travailliez avec des fichiers CSV, analysiez des journaux ou nettoyiez des données, la commande cut est un outil incontournable pour le traitement de texte sur les systèmes de type Unix.