← Sommaire SkyLinux

Leçon 53 : cut — Extraire des colonnes de texte

Introduction

La commande cut permet d'extraire des colonnes ou des portions de texte depuis un fichier ou une entrée standard. C'est l'outil idéal pour manipuler des données structurées par délimiteur (CSV, fichiers de logs, /etc/passwd, etc.).

Syntaxe de base

cut [OPTIONS] fichier

Options principales

OptionDescription
-d'délim'Spécifie le délimiteur de champs (par défaut : tabulation)
-f1,3Sélectionne les champs 1 et 3
-f1-3Sélectionne les champs 1 à 3
-f3-Du champ 3 jusqu'à la fin
-c1-10Sélectionne les caractères 1 à 10
-c1,3,5Sélectionne les caractères 1, 3 et 5
--complementInverse la sélection (affiche tout sauf)

Exemples concrets

1. Extraire des champs avec un délimiteur

Imaginons un fichier users.txt avec le format nom:email:ville :

alice:alice@email.com:Lyon
bob:bob@email.com:Paris
charlie:charlie@email.com:Toulouse

Pour extraire uniquement les noms (1er champ) :

cut -d':' -f1 users.txt
alice
bob
charlie

2. Extraire plusieurs champs

Pour obtenir nom et email (champs 1 et 2) :

cut -d':' -f1,2 users.txt

3. Extraire un intervalle de champs

Du champ 2 jusqu'à la fin :

cut -d':' -f2- users.txt

4. Travailler avec des caractères

Extraire les 5 premiers caractères de chaque ligne :

cut -c1-5 users.txt
alice
bob:b
charl

5. Travailler avec /etc/passwd

Le fichier /etc/passwd utilise : comme délimiteur. Pour extraire uniquement les noms d'utilisateur :

cut -d':' -f1 /etc/passwd

Pour obtenir uniquement les répertoires personnels (champ 6) :

cut -d':' -f1,6 /etc/passwd

6. Utiliser avec des tubes (pipes)

Combiner cut avec d'autres commandes :

ps aux | cut -d' ' -f1
ls -l | tail -n +2 | cut -d' ' -f5

7. Lire depuis l'entrée standard

cut peut lire depuis un tube sans fichier :

echo "pomme,banane,fraise" | cut -d',' -f2
banane

Cas pratiques

Extraire des IPs depuis un log

cat access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn | head -10

Cette commande extrait la première colonne (IP), compte les occurrences et trie par fréquence.

Extraire des colonnes d'un fichier CSV

cut -d',' -f1,3,7 data.csv

Sélection par complément

Pour afficher tout SAUF les champs 2 et 3 :

cut -d':' --complement -f2,3 users.txt

Combiner avec d'autres outils

cut s'intègre parfaitement dans des pipelines pour manipuler du texte structuré :

Différence entre -f et -c

OptionUsageExemple
-fPar champs (nécessite -d)cut -d',' -f1 fichier.csv
-cPar caractères (positions fixes)cut -c1-10 fichier

Résumé

CommandeUsage
cut -d':' -f1 fichierExtraire le 1er champ avec ':' comme séparateur
cut -d',' -f1,3 fichierExtraire champs 1 et 3 avec ',' comme séparateur
cut -c1-10 fichierExtraire caractères 1 à 10
cut -d':' -f2- fichierDu champ 2 jusqu'à la fin
echo "texte" | cut -d' ' -f1Depuis un pipe / entrée standard
cut --complement -f2 fichierInverse : affiche tout sauf champ 2