Introduction
Bienvenue dans le laboratoire de découpage de texte Linux. Dans ce laboratoire, vous apprendrez à utiliser la commande cut sous Linux pour extraire des parties spécifiques de fichiers texte. La commande cut est un outil puissant de traitement de texte qui vous permet d'extraire des sections de chaque ligne de fichiers ou de données transmises via un tuyau (pipe).
Vous apprendrez à utiliser différentes options de la commande cut pour extraire du texte en fonction de délimiteurs et de positions de caractères. Cette compétence est particulièrement utile lorsque vous travaillez avec des fichiers texte structurés tels que des fichiers CSV, des fichiers journaux (log files) ou tout type de données respectant un format cohérent.
À la fin de ce laboratoire, vous serez en mesure d'extraire et de manipuler efficacement des données textuelles dans des environnements Linux, ce qui est une compétence fondamentale pour l'administration système, le traitement de données et les tâches d'automatisation.
Comprendre l'utilisation de base de la commande cut
Dans cette étape, vous apprendrez l'utilisation de base de la commande cut. La commande cut sous Linux est utilisée pour extraire des sections de chaque ligne de fichiers ou de données transmises via un tuyau (pipe).
Commençons par créer un simple fichier de données avec lequel nous pouvons travailler :
cd ~/project
echo "name:age:city:occupation" > data/users.txt
echo "Alice:25:New York:Engineer" >> data/users.txt
echo "Bob:30:San Francisco:Designer" >> data/users.txt
echo "Charlie:22:Chicago:Student" >> data/users.txt
echo "Diana:28:Boston:Doctor" >> data/users.txt
Les commandes ci-dessus créent un fichier nommé users.txt dans le répertoire ~/project/data avec cinq lignes de valeurs séparées par des deux-points.
Maintenant, examinons le contenu de ce fichier :
cat data/users.txt
Vous devriez voir la sortie suivante :
name:age:city:occupation
Alice:25:New York:Engineer
Bob:30:San Francisco:Designer
Charlie:22:Chicago:Student
Diana:28:Boston:Doctor
Utilisation de cut avec un délimiteur
La façon la plus courante d'utiliser cut est avec un délimiteur pour extraire des champs spécifiques. La syntaxe de base est :
cut -d'delimiter' -f fields file
Où :
-dspécifie le caractère délimiteur-fspécifie le ou les champs à extrairefileest le fichier d'entrée
Extraisons les noms (premier champ) de notre fichier de données :
cut -d':' -f1 data/users.txt
Cette commande indique à cut de :
- Utiliser
:comme délimiteur (-d':') - Extraire le premier champ (
-f1) - Du fichier
data/users.txt
Vous devriez voir la sortie suivante :
name
Alice
Bob
Charlie
Diana
Maintenant, extraisons les âges (deuxième champ) :
cut -d':' -f2 data/users.txt
Sortie :
age
25
30
22
28
Extraction de plusieurs champs
Vous pouvez extraire plusieurs champs en les spécifiant sous forme de liste séparée par des virgules :
cut -d':' -f1,3 data/users.txt
Cela extrait le premier et le troisième champ (nom et ville) :
name:city
Alice:New York
Bob:San Francisco
Charlie:Chicago
Diana:Boston
Extraction d'une plage de champs
Vous pouvez également extraire une plage de champs en utilisant un tiret :
cut -d':' -f2-4 data/users.txt
Cela extrait les champs 2 à 4 (âge, ville et occupation) :
age:city:occupation
25:New York:Engineer
30:San Francisco:Designer
22:Chicago:Student
28:Boston:Doctor
Combinaison avec d'autres commandes
La commande cut peut être combinée avec d'autres commandes en utilisant des tuyaux (pipes). Par exemple, pour extraire seulement les âges des personnes qui sont ingénieurs :
grep "Engineer" data/users.txt | cut -d':' -f2
Sortie :
25
Essayez d'expérimenter avec différentes combinaisons de champs pour vous familiariser avec la commande.
Découpage par position de caractère
En plus de découper des champs en fonction de délimiteurs, la commande cut peut également extraire du texte en fonction des positions de caractères. Cela est utile lorsque vous travaillez avec des formats de données à largeur fixe ou lorsque vous avez besoin d'extraire des caractères spécifiques de chaque ligne.
Création de données à largeur fixe
Créons un nouveau fichier avec des données à largeur fixe pour démontrer cette fonctionnalité :
cd ~/project
echo "ID Name Department Salary" > data/employees.txt
echo "001 John IT 75000" >> data/employees.txt
echo "002 Mary HR 65000" >> data/employees.txt
echo "003 Steve Sales 85000" >> data/employees.txt
echo "004 Jennifer Marketing 70000" >> data/employees.txt
Maintenant, examinons ce fichier :
cat data/employees.txt
Vous devriez voir :
ID Name Department Salary
001 John IT 75000
002 Mary HR 65000
003 Steve Sales 85000
004 Jennifer Marketing 70000
Extraction par position de caractère
Pour extraire du texte en fonction des positions de caractères, utilisez l'option -c suivie des positions que vous souhaitez extraire. La syntaxe est :
cut -c positions file
Extraisons les identifiants des employés (les 3 premiers caractères) de notre fichier de données :
cut -c1-3 data/employees.txt
Cette commande indique à cut d'extraire les caractères de la position 1 à la position 3 de chaque ligne. Vous devriez voir :
ID
001
002
003
004
Extraction de caractères spécifiques
Vous pouvez également extraire des caractères spécifiques non consécutifs :
cut -c1,5,9 data/employees.txt
Cela extrait le 1er, le 5ème et le 9ème caractère de chaque ligne :
I N
0 J
0 M
0 S
0 J
Extraction depuis une position spécifique jusqu'à la fin
Pour extraire des caractères depuis une certaine position jusqu'à la fin de la ligne, utilisez un tiret après le numéro de position :
cut -c5- data/employees.txt
Cela extrait les caractères de la position 5 jusqu'à la fin de chaque ligne :
Name Department Salary
John IT 75000
Mary HR 65000
Steve Sales 85000
Jennifer Marketing 70000
Combinaison de l'extraction par position de caractère avec le piping
Vous pouvez combiner la commande cut avec d'autres commandes en utilisant des tuyaux (pipes). Par exemple, pour extraire seulement les noms de département (caractères 13 - 22) des employés ayant un salaire supérieur à 70000 :
grep -E "[7-9][0-9]000" data/employees.txt | cut -c13-22
Cela devrait afficher :
IT
Sales
Exercice de pratique
Essayez d'extraire seulement les noms (caractères 5 - 12) du fichier des employés :
cut -c5-12 data/employees.txt
Vous devriez voir :
Name
John
Mary
Steve
Jennifer
Comme vous pouvez le voir, le découpage par position de caractère est particulièrement utile pour le traitement de formats de données à largeur fixe où chaque champ occupe un nombre spécifique de caractères dans chaque ligne.
Combinaison de la commande cut avec d'autres outils de traitement de texte
Dans cette étape, vous apprendrez à combiner la commande cut avec d'autres commandes de traitement de texte Linux pour effectuer des tâches plus complexes d'extraction et de manipulation de données.
Création d'un fichier de données CSV
Tout d'abord, créons un fichier CSV (Comma-Separated Values, valeurs séparées par des virgules) avec lequel travailler :
cd ~/project
echo "Date,Product,Quantity,Price,Total" > data/sales.csv
echo "2023-01-15,Laptop,5,1200,6000" >> data/sales.csv
echo "2023-01-16,Mouse,20,25,500" >> data/sales.csv
echo "2023-01-17,Keyboard,15,50,750" >> data/sales.csv
echo "2023-01-18,Monitor,8,200,1600" >> data/sales.csv
echo "2023-01-19,Headphones,12,80,960" >> data/sales.csv
Vérifions le contenu de ce fichier :
cat data/sales.csv
Vous devriez voir :
Date,Product,Quantity,Price,Total
2023-01-15,Laptop,5,1200,6000
2023-01-16,Mouse,20,25,500
2023-01-17,Keyboard,15,50,750
2023-01-18,Monitor,8,200,1600
2023-01-19,Headphones,12,80,960
Combinaison de cut avec grep
Vous pouvez utiliser grep pour trouver les lignes contenant des motifs spécifiques, puis utiliser cut pour extraire des champs spécifiques de ces lignes :
grep "Laptop" data/sales.csv | cut -d',' -f3-5
Cette commande trouve d'abord toutes les lignes contenant "Laptop", puis extrait les champs 3 - 5 (Quantité, Prix et Total). Vous devriez voir :
5,1200,6000
Combinaison de cut avec sort
Vous pouvez utiliser sort pour organiser les données en fonction d'un champ spécifique :
cut -d',' -f2,4 data/sales.csv | sort -t',' -k2nr
Cette commande extrait le Produit (champ 2) et le Prix (champ 4), puis les trie en fonction du Prix dans l'ordre numérique inverse. L'option -t',' spécifie le délimiteur pour sort, -k2 indique le tri par le deuxième champ, n signifie tri numérique et r pour l'ordre inverse.
Vous devriez voir :
Product,Price
Laptop,1200
Monitor,200
Headphones,80
Keyboard,50
Mouse,25
Combinaison de cut avec sed
La commande sed est un éditeur de flux qui peut effectuer des transformations de texte de base. Voici un exemple de combinaison de cut avec sed :
cut -d',' -f1,2,5 data/sales.csv | sed 's/,/ - /g'
Cela extrait les champs Date, Produit et Total, puis remplace toutes les virgules par " - ". Vous devriez voir :
Date - Product - Total
2023-01-15 - Laptop - 6000
2023-01-16 - Mouse - 500
2023-01-17 - Keyboard - 750
2023-01-18 - Monitor - 1600
2023-01-19 - Headphones - 960
Combinaison de cut avec awk
La commande awk est un outil puissant de traitement de texte. Voici comment la combiner avec cut :
cut -d',' -f2-4 data/sales.csv | awk -F',' 'NR > 1 {print $1 " costs $" $3 " per unit"}'
Cela extrait les champs 2 - 4 (Produit, Quantité et Prix), puis utilise awk pour formater un message. La condition NR > 1 ignore la ligne d'en-tête, et l'instruction d'impression formate la sortie.
Vous devriez voir :
Laptop costs $1200 per unit
Mouse costs $25 per unit
Keyboard costs $50 per unit
Monitor costs $200 per unit
Headphones costs $80 per unit
Traitement de plusieurs fichiers
Vous pouvez également utiliser cut avec plusieurs fichiers. Créons un autre fichier :
echo "Category,Product,Stock" > data/inventory.csv
echo "Electronics,Laptop,15" >> data/inventory.csv
echo "Accessories,Mouse,50" >> data/inventory.csv
echo "Accessories,Keyboard,30" >> data/inventory.csv
echo "Electronics,Monitor,20" >> data/inventory.csv
echo "Accessories,Headphones,25" >> data/inventory.csv
Maintenant, extrayons le champ Produit des deux fichiers :
cut -d',' -f2 data/sales.csv data/inventory.csv
Vous devriez voir :
Product
Laptop
Mouse
Keyboard
Monitor
Headphones
Product
Laptop
Mouse
Keyboard
Monitor
Headphones
La commande cut traite tous les fichiers et affiche tous les résultats séquentiellement. Notez que les deux lignes d'en-tête sont incluses.
En combinant cut avec d'autres outils de traitement de texte, vous pouvez effectuer des tâches sophistiquées de manipulation de données de manière efficace sous Linux.
Applications pratiques de la commande cut
Dans cette étape, vous allez explorer quelques applications pratiques de la commande cut que vous pourriez rencontrer dans des scénarios réels.
Analyse de fichiers de logs
Les fichiers de logs sont un cas d'utilisation courant pour les outils de traitement de texte. Créons un simple fichier de log d'accès au style Apache :
cd ~/project
cat > data/access.log << EOF
192.168.1.100 - - [15/Feb/2023:10:12:01 -0500] "GET /index.html HTTP/1.1" 200 2048
192.168.1.102 - - [15/Feb/2023:10:13:25 -0500] "GET /images/logo.png HTTP/1.1" 200 4096
192.168.1.103 - - [15/Feb/2023:10:14:10 -0500] "POST /login.php HTTP/1.1" 302 1024
192.168.1.100 - - [15/Feb/2023:10:15:30 -0500] "GET /dashboard.html HTTP/1.1" 200 3072
192.168.1.104 - - [15/Feb/2023:10:16:22 -0500] "GET /css/style.css HTTP/1.1" 404 512
192.168.1.105 - - [15/Feb/2023:10:17:40 -0500] "GET /index.html HTTP/1.1" 200 2048
EOF
Extrayons les adresses IP (premier champ) du fichier de log :
cut -d' ' -f1 data/access.log
Vous devriez voir :
192.168.1.100
192.168.1.102
192.168.1.103
192.168.1.100
192.168.1.104
192.168.1.105
Maintenant, extrayons les codes de statut HTTP (9ème champ) :
cut -d' ' -f9 data/access.log
Vous devriez voir :
200
200
302
200
404
200
Traitement de fichiers de configuration
Un autre cas d'utilisation courant est le traitement de fichiers de configuration. Créons un simple fichier de configuration :
cat > data/config.ini << EOF
[Database]
host=localhost
port=3306
user=dbuser
password=dbpass
[Server]
host=192.168.1.10
port=8080
maxConnections=100
[Logging]
level=INFO
file=/var/log/app.log
EOF
Pour extraire tous les noms de paramètres (la partie avant le signe égal) :
grep -v "^\[" data/config.ini | cut -d'=' -f1
Cette commande utilise grep -v "^\[" pour exclure les en-têtes de section (les lignes commençant par [), puis utilise cut pour extraire la partie avant =. Vous devriez voir :
host
port
user
password
host
port
maxConnections
level
file
Extraction de données à partir de fichiers CSV pour la génération de rapports
Créons un fichier CSV plus complexe représentant les notes des étudiants :
cat > data/grades.csv << EOF
StudentID,Name,Math,Science,English,History,Average
S001,John Smith,85,92,78,88,85.75
S002,Mary Johnson,90,88,92,85,88.75
S003,Robert Davis,78,80,85,92,83.75
S004,Jennifer Lee,95,93,90,87,91.25
S005,Michael Brown,82,85,88,90,86.25
EOF
Pour générer un simple rapport montrant les noms des étudiants et leurs notes moyennes :
tail -n +2 data/grades.csv | cut -d',' -f2,6
La commande tail -n +2 saute la ligne d'en-tête, et cut extrait les champs Nom et Moyenne. Vous devriez voir :
John Smith,85.75
Mary Johnson,88.75
Robert Davis,83.75
Jennifer Lee,91.25
Michael Brown,86.25
Pour trouver les étudiants ayant une note moyenne supérieure à 85 :
tail -n +2 data/grades.csv | cut -d',' -f2,6 | awk -F',' '$2 > 85 {print $1 " has an average of " $2}'
Vous devriez voir :
John Smith has an average of 85.75
Mary Johnson has an average of 88.75
Jennifer Lee has an average of 91.25
Michael Brown has an average of 86.25
Extraction de colonnes spécifiques à partir de la sortie de commandes
Vous pouvez utiliser cut pour extraire des colonnes spécifiques à partir de la sortie de commandes. Par exemple, pour lister uniquement les noms et les tailles des fichiers dans le répertoire actuel :
ls -l ~/project/data | tail -n +2 | cut -d' ' -f5,9
Cette commande liste les fichiers en format détaillé, saute la ligne d'en-tête et extrait la taille (champ 5) et le nom (champ 9). La sortie exacte dépendra de vos fichiers, mais elle ressemblera à ceci :
237 access.log
99 config.ini
203 employees.txt
179 grades.csv
110 inventory.csv
150 sales.csv
264 users.txt
Ces exemples démontrent comment la commande cut peut être utilisée dans divers scénarios pratiques pour extraire et traiter des parties spécifiques de données textuelles.
Résumé
Dans ce laboratoire, vous avez appris à utiliser la commande Linux cut pour extraire des parties spécifiques de texte à partir de fichiers. Vous avez abordé :
- L'utilisation de base de
cutavec des délimiteurs pour extraire des champs à partir de fichiers texte structurés - Comment extraire du texte en fonction des positions des caractères pour les formats de données à largeur fixe
- La combinaison de
cutavec d'autres outils de traitement de texte tels quegrep,sort,sedetawkpour des manipulations de données plus complexes - Les applications pratiques de la commande
cutpour des scénarios courants tels que l'analyse de logs, le traitement de fichiers de configuration et la génération de rapports de données
La commande cut est un outil puissant dans la boîte à outils de traitement de texte Linux. Bien qu'elle puisse sembler simple au premier abord, sa capacité à extraire des parties spécifiques de texte la rend inestimable pour de nombreuses tâches de traitement de données. Lorsqu'elle est combinée avec d'autres commandes Linux via des pipes, elle fait partie d'un système de traitement de texte flexible et puissant.
Voici quelques points clés à retenir :
- Utilisez
-dpour spécifier un délimiteur et-fpour sélectionner des champs lorsque vous travaillez avec du texte structuré - Utilisez
-cpour extraire des caractères spécifiques lorsque vous travaillez avec des données à largeur fixe - Combinez
cutavec d'autres commandes en utilisant des pipes pour un traitement plus sophistiqué - La commande
cutest la plus efficace lorsque les données suivent un format cohérent
Avec ces compétences, vous pouvez maintenant extraire et traiter efficacement des données textuelles dans des environnements Linux, ce qui est essentiel pour diverses tâches administratives et de traitement de données.



