Cut
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Domaine | Traitement de texte (découpage de champs/colonnes) |
| Commande | cut
|
| Contexte | Extraction de champs ou de positions de caractères, ligne par ligne |
| Limite | Délimiteur mono-caractère uniquement |
| Voir aussi | Awk (délimiteur complexe), Sed |
cut extrait une portion de chaque ligne d'un flux texte : soit des champs séparés par un caractère délimiteur (options -d/-f), soit des positions de caractères fixes (option -c). C'est l'outil le plus rapide pour isoler une colonne d'un fichier CSV, d'un log ou de la sortie d'une autre commande, tant que le séparateur ne fait qu'un seul caractère.
Découper par délimiteur : -d et -f
cut -d':' -f1 /etc/passwd # premier champ (login), délimiteur ":"
cut -d':' -f1,3 /etc/passwd # champs 1 et 3 (login, uid)
cut -d':' -f1-3 /etc/passwd # champs 1 à 3
cut -d':' -f3- /etc/passwd # du champ 3 jusqu'à la fin de la ligne
cut -d',' -f2 fichier.csv # 2e colonne d'un CSV simple
Découper par position : -c
cut -c1-10 fichier.txt # les 10 premiers caractères de chaque ligne
cut -c5 fichier.txt # uniquement le 5e caractère
cut -c1,3,5 fichier.txt # caractères 1, 3 et 5
cut -c10- fichier.txt # à partir du 10e caractère jusqu'à la fin
Syntaxe des plages
Les options -f et -c partagent la même syntaxe de plage :
n: le champ ou caractère numéro nn-m: de n à m inclusn-: de n jusqu'à la fin de la ligne-m: du début jusqu'à m inclusn,m: positions n et m, combinable avec des plages (ex.1,3-5)
Limite du délimiteur mono-caractère
L'option -d n'accepte qu'un seul caractère comme délimiteur : impossible de découper directement sur une chaîne multi-caractères comme "::", ou sur un nombre variable d'espaces/tabulations consécutifs. Dans ce cas, remplacer cut par awk, dont l'option -F accepte une expression régulière comme séparateur de champs.
awk -F'::' '{print $2}' fichier.txt # délimiteur multi-caractères
awk -F'[[:space:]]+' '{print $1}' fichier.txt # nombre variable d'espaces/tabulations