
La commande cut sous Linux est un utilitaire essentiel au traitement de texte. Elle permet d’extraire des segments spécifiques de chaque ligne d’un fichier ou d’une entrée canalisée. Cette commande ne modifie pas le fichier d’origine, mais lit les données et affiche les portions souhaitées sur la sortie standard. Dans ce guide, nous allons explorer les fonctionnalités de la commande cut sous Linux et fournir des exemples concrets pour illustrer son utilisation.
Exploration de la commande cut
Cette cut
commande est essentielle pour quiconque manipule du texte structuré, facilitant la manipulation et l’extraction efficaces des données dans des environnements de type Unix. En extrayant des portions d’une ligne en fonction de la position des octets, de la position des caractères, des séparateurs ou des champs, cut s’avère précieuse pour filtrer et organiser les données dans les scripts shell et les opérations en ligne de commande. Ses applications vont de la récupération de colonnes spécifiques dans des fichiers CSV à la suppression de caractères inutiles ou à l’analyse de journaux. Bien que souvent utilisée directement avec des fichiers, cut interagit également de manière transparente avec la sortie d’autres commandes lorsqu’elle est exploitée dans un pipeline.
Syntaxe de base de la commande cut
La commande « Couper » est simple : elle utilise des options suivies d’un nom de fichier. Sa syntaxe est la suivante :
cut [OPTIONS] [FILE]
Dans cette structure, les OPTIONS déterminent le fonctionnement de la commande cut, vous permettant de sélectionner un séparateur de champ (comme une virgule), de choisir des champs spécifiques, de définir des plages et d’exclure les lignes sans séparateur, entre autres fonctionnalités. Si aucun fichier n’est spécifié, cut lira l’entrée standard. De plus, vous pouvez fournir plusieurs fichiers, qui seront traités comme une entité combinée pour le traitement.
Options couramment utilisées
La commande Couper offre diverses options pour localiser précisément les segments de texte à extraire. Voici quelques-unes des plus fréquemment utilisées :
- -f ou –fields=LIST : Permet la sélection de champs spécifiques en fonction d’un délimiteur désigné.
- -b ou –bytes=LIST : Extrait les octets spécifiés de chaque ligne.
- -c ou –characters=LIST : Récupère des caractères spécifiques de chaque ligne.
- -d ou –delimiter : définit un délimiteur personnalisé au lieu de la tabulation par défaut.
- –complément : affiche tout sauf les champs, octets ou caractères spécifiés.
- -s ou –only-delimited : ignore les lignes sans délimiteur ; ces lignes sont incluses par défaut.
- –output-delimiter : permet de sélectionner un délimiteur différent pour la sortie, contrastant avec le délimiteur d’entrée.
Les options -f
, -b
et -c
utilisent une LISTE pour définir les éléments à extraire. Vous pouvez spécifier les éléments suivants :
- Un seul chiffre comme 2.
- Plusieurs nombres séparés par des virgules, comme 1, 3, 5.
- Une plage comme 2-4 (pour extraire des valeurs de 2 à 4).
-
N-
pour désigner l’extraction de la position N jusqu’à la fin. -
-M
pour signifier l’extraction depuis le début jusqu’à la position M.
Utilisation de la commande cut sous Linux
Pour illustrer le fonctionnement de la commande cut, prenons quelques exemples pratiques. Commençons par créer un fichier d’exemple nommé « mte.csv » à l’aide de la commande echo :
echo -e "empID, empName, empDesig\n101, Anees, Author\n102, Asghar, Manager\n103, Damian, CEO" > mte.csv

Ensuite, nous pouvons vérifier le contenu du fichier en utilisant la commande cat :
cat mte.csv

Il est crucial de mentionner que la commande cut présente simplement la sortie spécifiée sans modifier le fichier lui-même.
Extraction de données par caractères
Pour extraire des caractères par position, utilisez l’ -c
option avec la commande cut :
cut -c 1, 8 mte.csv
Cette commande extrait le premier et le huitième caractère de chaque ligne :

Pour extraire des caractères dans une plage spécifiée, appliquez la commande suivante :
cut -c 1-8 mte.csv
Cela extrait les caractères des positions 1 à 8 dans chaque ligne :

Extraction par octet
Pour extraire des octets spécifiques, utilisez l’ -b
option avec la commande cut :
cut -b 1-3 mte.csv
Cette commande extrait les trois premiers octets de chaque ligne du fichier mte.csv
:

Extraction par champ (colonne)
Pour extraire un champ entier d’un fichier, utilisez la commande cut avec les options -f
et :-d
cut -d', ' -f2 mte.csv
Dans cette commande, -d', '
désigne une virgule comme délimiteur, tandis que -f2
indique que cut doit extraire le deuxième champ de chaque ligne :

Implémentation de délimiteurs personnalisés dans cut
Bien que la fonction cut utilise par défaut une tabulation comme délimiteur, si les champs sont séparés par un caractère différent, utilisez -d
pour spécifier le caractère correct. Par exemple, pour extraire le cinquième mot d’une phrase séparée par des espaces, vous pouvez utiliser :
echo "Hey! Geeks Welcome to Maketecheasier.com" | cut -d ' ' -f 5

Exclusion de champs spécifiques lors de l’extraction
Vous pouvez omettre certains champs lors de l’extraction de texte d’un fichier en utilisant l’ --complement
option associée à la commande cut. Cette option spécifie que cut doit afficher tous les champs, à l’exception de ceux désignés :
cut -d', ' -f1 mte.csv --complement
Cette commande ignore la première colonne et renvoie le reste du contenu :

Modification du délimiteur de sortie par défaut
Par défaut, lors de l’extraction de champs, la commande « Cut » conserve le délimiteur d’entrée dans la sortie. Cependant, vous pouvez modifier le délimiteur de sortie à l’aide de l’ --output-delimiter
option :
cut -d', ' -f1-3 --output-delimiter='-' mte.csv
Cette commande utilise un trait d’union comme séparateur dans la sortie :

Combinaison de cut avec d’autres commandes Linux
La commande cut peut également être utilisée conjointement avec d’autres commandes Linux grâce au symbole pipeline |.Par exemple, la commande suivante extrait les cinq premiers caractères de chaque ligne de sortiewho
:
who | cut -c 1-5

Dans un autre exemple, vous pouvez utiliser la commande cut avec head pour afficher les deux premières lignes de « mte.csv », en extrayant uniquement les champs empName et empDesig :
head -n 2 mte.csv | cut -d ', ' -f2, 3

Navigation dans les formats de données irréguliers avec la commande Linux cut
La commande cut est idéale pour gérer des données correctement formatées avec des délimiteurs cohérents (comme des virgules ou des tabulations).Cependant, si vous rencontrez des fichiers avec un espacement incohérent ou des délimiteurs mixtes, l’utilisation de cut seule peut donner des résultats insatisfaisants. Pour résoudre ce problème, il est souvent judicieux de nettoyer les données au préalable à l’aide de commandes telles que tr
ou sed
, afin de garantir que cut puisse extraire efficacement les parties correctes.
Gestion des espaces excédentaires
Considérez un fichier nommé « mteData.txt » où les champs sont séparés par des espaces variables :
cat mteData.txt

Étant donné que cut anticipe un seul délimiteur, utilisez tr
pour normaliser l’espacement avant d’appliquer cut :
cat mteData.txt | tr -s ' ' | cut -d ' ' -f1-2
Cette commande traite « mteData.txt », remplace plusieurs espaces par un seul en utilisant tr
, puis extrait les deux premiers champs :

Gestion des délimiteurs mixtes
Si un fichier utilise une combinaison d’espaces et de virgules, normalisez le format avec sed
. Par exemple, un fichier nommé « mteData1.txt » contient :
cat mteData1.txt

Utilisez sed
avec cut pour convertir tous les espaces en virgules, puis extrayez les premier et troisième champs :
sed 's/ /, /g' mteData1.txt | cut -d ', ' -f1, 3

Conclusion
Tout au long de cet article, nous avons présenté les fonctionnalités de la commande Linux cut, un outil essentiel pour extraire des données de fichiers ou d’entrées canalisées. Grâce à sa syntaxe simple, vous pouvez facilement obtenir des caractères, des octets ou des champs à partir d’un délimiteur spécifié. De plus, nous avons montré comment combiner la commande cut avec d’autres utilitaires tels que tr
, sed
, et head
pour gérer les données non nettoyées et obtenir des résultats plus efficaces. Que vous manipuliez des fichiers CSV, analysiez des journaux ou nettoyiez des données, la commande cut est un atout indispensable pour le traitement de texte dans des environnements de type Unix.
Questions fréquemment posées
1. Quel est l’objectif principal de la commande cut sous Linux ?
Sous Linux, la commande cut est principalement utilisée pour extraire des sections de texte spécifiques de fichiers ou du résultat d’autres commandes. Elle permet aux utilisateurs de manipuler et de formater efficacement les données en fonction des délimiteurs, des positions d’octets ou des positions de caractères.
2. Puis-je combiner la commande cut avec d’autres commandes Linux ?
Oui ! La commande cut s’intègre parfaitement à d’autres commandes Linux grâce au symbole de pipeline (|).Cela permet un traitement de données puissant, vous permettant de filtrer et de formater les résultats de diverses commandes.
3. Comment puis-je spécifier un délimiteur personnalisé lors de l’utilisation de la commande cut ?
Vous pouvez spécifier un délimiteur personnalisé en utilisant l’ -d
option suivie du caractère de délimitation souhaité. Par exemple, pour utiliser une virgule comme délimiteur, utilisez -d', '
.
Laisser un commentaire ▼