
Table des matières
La commande Cut dans Linux est un puissant utilitaire de traitement du texte utilisé pour extraire des sections spécifiques de chaque ligne d'un fichier ou à partir de l'entrée tuyau. Il ne modifie pas le fichier d'origine mais lit simplement le contenu et affiche les parties souhaitées sur la sortie standard. Dans cet article, nous explorerons l'objectif de la commande Cut dans Linux et montrerons comment l'utiliser à travers des exemples pratiques et réels.
Comprendre la commande Cut
Le cut
La commande est un outil précieux pour toute personne travaillant avec du texte structuré, permettant une manipulation et une extraction efficaces des données dans des systèmes de type UNIX. Il extrait des parties d'une ligne basée sur des positions d'octets, des positions de caractère, des délimiteurs ou des champs. Cela le rend particulièrement utile pour filtrer et organiser des données dans les scripts shell et les opérations de ligne de commande. Il est également utile pour les tâches telles que la récupération des colonnes à partir de fichiers CSV, la coupe des caractères ou l'analyse des fichiers journaux. Bien qu'il soit couramment utilisé avec les 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) (FILE)
Ici, les options vous permet de contrôler le fonctionnement de la commande Cut. Vous pouvez choisir un séparateur de champs (comme une virgule), choisir certains champs, définir des gammes de champs, ignorer les lignes sans le séparateur, etc. Le fichier est le fichier cible à partir duquel vous souhaitez extraire des données. La commande Cut se 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 en combinant leur contenu avant le traitement.
Options couramment utilisées
La commande Cut vous permet d'extraire des parties spécifiques du texte à partir d'un fichier ou d'une entrée. Vous pouvez lui dire quoi extraire en utilisant différentes options, telles que les octets, les caractères ou les champs, et en définissant un séparateur spécifique (délimiteur). Voici les options communes:
- -f ou –Fields = liste: Sélectionne des champs spécifiques basés sur un délimiteur choisi.
- -B ou –Bytes = liste: Extrait certains octets de chaque ligne.
- -C ou –Characters = liste: Sorte des caractères spécifiques de chaque ligne.
- -d ou –Deliter: Définit un délimiteur personnalisé au lieu de l'onglet par défaut.
- -complément: Montre tout sauf les champs, octets ou caractères sélectionnés.
- -s ou – uniquement dédié: Saute des lignes qui n'ont pas le délimiteur. Par défaut, ces lignes sont incluses.
- –Out-délimiteur: Il 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.
Le -f
, -b
et -c
Les options utilisent une liste pour définir ce qu'il faut extraire, telles que les champs, les octets ou les caractères. Vous pouvez spécifier ce qui suit:
- Un seul numéro comme 2
- Plusieurs nombres séparés par des virgules, comme 1,3,5
- Une plage comme 2-4 (ce qui signifie l'extrait de 2 à 4)
N-
pour signifier de la position n à la fin-M
pour signifier de la start-up pour positionner m
Comment la commande Cut fonctionne dans Linux
Passons en revue quelques exemples pratiques pour comprendre comment la commande Cut fonctionne dans Linux. À cette fin, créez d'abord un fichier appelé «mte.csv» à l'aide de la commande echo:
echo -e "empID,empName,empDesign101,Anees,Authorn102,Asghar,Managern103,Damian,CEO" > mte.csv
Vérifions le contenu du fichier à l'aide de la commande CAT:
cat mte.csv

Ici, il est important de noter que la commande Cut ne modifie pas le fichier, il affiche plutôt la sortie sélectionnée en fonction de ce que vous demandez.
Extraction de données par des caractères
Utiliser le -c
Option avec la commande Cut pour extraire les caractères par position:
cut -c 1,8 mte.csv
Cette commande extrait les premier et huitième caractères de chaque ligne:

Pour extraire des caractères entre des positions ou des gammes spécifiques, nous pouvons utiliser la commande Cut comme suit:
cut -c 1-8 mte.csv
Cette commande extrait les huitième caractères (entre 1 et 8) de chaque ligne:

Extraction par octet
Nous pouvons utiliser le -b
Option avec la commande Cut pour extraire des octets spécifiques de chaque ligne:
cut -b 1-3 mte.csv
Cette commande extrait les trois premiers octets 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 le -f
avec -d
Option, comme suit:
cut -d',' -f2 mte.csv
Dans cette commande, -d','
définit le délimiteur à une virgule, et -f2
raconte coupé pour extraire le deuxième champ de chaque ligne du mte.csv
déposer:

Utilisation de délimiteurs personnalisés en coupe
La commande Cut utilise un onglet comme délimiteur, par défaut. Cependant, si vos champs sont séparés par autre chose qu'un onglet, utilisez -d
Pour régler le bon. Par exemple, nous pouvons obtenir le cinquième mot d'une phrase séparée par l'espace en utilisant le -d
Delimiter comme suit:
echo "Hey! Geeks Welcome to Maketecheasier.com" | cut -d ' ' -f 5

Sauter certains champs pendant l'extraction
Vous pouvez exclure des champs spécifiques tout en extraitant du texte à partir d'un fichier en utilisant le --complement
Option avec la commande Cut. Cette option ordonne à la commande de coupe de sortir tous les champs à l'exception de ceux spécifiés:
cut -d',' -f1 mte.csv --complement
Cette commande sautera la première colonne et renverra le reste du contenu:

Modification du délimiteur par défaut dans la sortie
Par défaut, la commande Cut conserve le délimiteur d'entrée dans la sortie lors de l'extraction des champs. Cependant, vous pouvez modifier le délimiteur de sortie en utilisant le --output-delimiter
Option lorsque vous travaillez avec l'extraction basée sur le terrain:
cut -d',' -f1-3 --output-delimiter='-' mte.csv
Cette commande utilise le trait d'union -
comme séparateur dans la sortie:

Utilisation de coupe avec d'autres commandes Linux utiles
Vous pouvez également utiliser Cut avec d'autres commandes Linux à l'aide du symbole du pipeline. Par exemple, la commande suivante extrait les 5 premiers caractères de chaque ligne du who
Sortie de la commande:
who | cut -c 1-5

Dans l'exemple suivant, nous utilisons la commande Cut avec la tête pour afficher les deux premières lignes du fichier «mte.csv» et extraire uniquement les champs EMPNAME et EMPDESIG:
head -n 2 mte.csv | cut -d ',' -f2,3

Gérer les formats de données irréguliers avec la commande Linux Cut
La commande Cut fonctionne mieux lorsque les données sont soigneusement organisées, avec le même délimiteur (comme une virgule ou une onglet) séparant chaque pièce. Mais si le fichier a des espaces inégaux ou des délimiteurs mixtes, la coupe pourrait ne pas fonctionner bien seule. 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 la coupe peut extraire les bonnes parties.
Manipulation des espaces supplémentaires
Considérez un fichier nommé «mtedata.txt» où les champs sont séparés par plusieurs espaces, comme indiqué ci-dessous:
cat mteData.txt

Étant donné que Cut attend un seul délimiteur cohérent, nous pouvons simplifier l'espacement en utilisant tr
Avant d'appliquer la coupe:
cat mteData.txt | tr -s ' ' | cut -d ' ' -f1-2
Cette commande lit le contenu de «mtedata.txt», utilise TR pour remplacer plusieurs espaces par un seul espace, puis utilise la coupe pour extraire les deux premiers champs séparés par l'espace:

Manipulation de délimiteurs mixtes
Si un fichier utilise une combinaison d'espaces et de virgules comme délimiteurs, nous pouvons normaliser le format en utilisant sed
. Par exemple, un fichier nommé «mtedata1.txt» contient le contenu suivant:
cat mteData1.txt

Utilisons la commande SED avec la commande Cut pour remplacer tous les espaces par une virgule, puis extraire les champs séparés des premiers et troisième virages:
sed 's/ /,/g' mteData1.txt | cut -d ',' -f1,3

Emballage
Dans cet article, nous avons exploré la commande Linux Cut, une commande utile dans Linux pour extraire des données à partir de fichiers ou une entrée tuyaux. Avec sa syntaxe simple, vous pouvez facilement obtenir des caractères, des octets ou des champs basés sur un délimiteur. Nous avons également démontré comment utiliser la commande Cut avec d'autres commandes comme TR, SED et tête pour gérer les données désordonnées et simplifier la sortie. Que vous travailliez avec des fichiers CSV, analysant les journaux ou nettoyant les données, la commande Cut est un outil incontournable pour le traitement de texte sur les systèmes de type UNIX.