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.).
cut [OPTIONS] fichier| Option | Description |
|---|---|
-d'délim' | Spécifie le délimiteur de champs (par défaut : tabulation) |
-f1,3 | Sélectionne les champs 1 et 3 |
-f1-3 | Sélectionne les champs 1 à 3 |
-f3- | Du champ 3 jusqu'à la fin |
-c1-10 | Sélectionne les caractères 1 à 10 |
-c1,3,5 | Sélectionne les caractères 1, 3 et 5 |
--complement | Inverse la sélection (affiche tout sauf) |
Imaginons un fichier users.txt avec le format nom:email:ville :
alice:alice@email.com:Lyonbob:bob@email.com:Parischarlie:charlie@email.com:ToulousePour extraire uniquement les noms (1er champ) :
cut -d':' -f1 users.txtalicebobcharliePour obtenir nom et email (champs 1 et 2) :
cut -d':' -f1,2 users.txtDu champ 2 jusqu'à la fin :
cut -d':' -f2- users.txtExtraire les 5 premiers caractères de chaque ligne :
cut -c1-5 users.txtalicebob:bcharlLe fichier /etc/passwd utilise : comme délimiteur. Pour extraire uniquement les noms d'utilisateur :
cut -d':' -f1 /etc/passwdPour obtenir uniquement les répertoires personnels (champ 6) :
cut -d':' -f1,6 /etc/passwdCombiner cut avec d'autres commandes :
ps aux | cut -d' ' -f1ls -l | tail -n +2 | cut -d' ' -f5cut peut lire depuis un tube sans fichier :
echo "pomme,banane,fraise" | cut -d',' -f2bananecat access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn | head -10Cette commande extrait la première colonne (IP), compte les occurrences et trie par fréquence.
cut -d',' -f1,3,7 data.csvPour afficher tout SAUF les champs 2 et 3 :
cut -d':' --complement -f2,3 users.txtcut s'intègre parfaitement dans des pipelines pour manipuler du texte structuré :
cat fichier.csv | cut -d',' -f2 | sort | uniq — Extrait une colonne, trie et dédoublonneps aux | cut -d' ' -f1,11 | grep utilisateur — Extrait colonnes et filtrecut -d':' -f1,5 /etc/passwd | head -10 — Affiche utilisateurs et shells| Option | Usage | Exemple |
|---|---|---|
-f | Par champs (nécessite -d) | cut -d',' -f1 fichier.csv |
-c | Par caractères (positions fixes) | cut -c1-10 fichier |
| Commande | Usage |
|---|---|
cut -d':' -f1 fichier | Extraire le 1er champ avec ':' comme séparateur |
cut -d',' -f1,3 fichier | Extraire champs 1 et 3 avec ',' comme séparateur |
cut -c1-10 fichier | Extraire caractères 1 à 10 |
cut -d':' -f2- fichier | Du champ 2 jusqu'à la fin |
echo "texte" | cut -d' ' -f1 | Depuis un pipe / entrée standard |
cut --complement -f2 fichier | Inverse : affiche tout sauf champ 2 |