Cut

De wiki.nexiat.fr
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 n
  • n-m : de n à m inclus
  • n- : de n jusqu'à la fin de la ligne
  • -m : du début jusqu'à m inclus
  • n,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

Voir aussi

  • Awk — délimiteur multi-caractères ou expression régulière, traitement plus riche par champ
  • Sed — édition de texte par expression régulière