Guide cut sous Ubuntu : extraction et filtrage de données

Présentation générale

L’utilitaire cut constitue un rouage fondamental de la boîte à outils GNU/Linux pour quiconque manipule des journaux applicatifs ou des flux textuels structurés. Ce tutoriel pratique sous Ubuntu détaille les fonctionnalités maîtresses de cet outil, de l’isolation de colonnes par délimiteur au découpage précis par position de caractères ou d’octets.

Préparation de l’environnement de test et des jeux d’essai

Afin d’isoler nos expérimentations sans risquer d’altérer vos fichiers courants, initialisons un répertoire de travail dédié puis basculons à l’intérieur via la commande mkdir -p ~/cut_practice && cd ~/cut_practice.

Initialisation et accès au dossier de travail

Générons d’abord un fichier users.txt simulant une base d’utilisateurs où chaque champ technique est séparé par un deux-points (:) à l’aide de l’instruction printf.

Génération du fichier users.txt avec le séparateur deux-points

Créons ensuite servers.csv, un inventaire de machines au format CSV classique séparé par des virgules (,) indiquant adresses IP et statuts de service.

Création de l’inventaire servers.csv au format CSV

Vérifions la structure et l’intégrité de notre premier jeu de données en exécutant cat users.txt.

Contrôle visuel du contenu de users.txt

Assurons-nous également du bon agencement des enregistrements du fichier servers.csv avant d’entamer les extractions avec cat servers.csv.

Vérification du format tabulaire de servers.csv

Extraction ciblée de colonnes via les options -d et -f

Pour isoler uniquement les identifiants techniques dans users.txt, nous déclarons le deux-points comme séparateur avec -d ':' et sélectionnons la première position grâce au commutateur -f 1 via cut -d ':' -f 1 users.txt.

Extraction du premier champ ID avec cut

Il est tout à fait possible de cibler plusieurs colonnes disjointes en séparant leurs index par une virgule. La commande cut -d ':' -f 2,4 users.txt retient conjointement le nom (colonne 2) et le département (colonne 4).

Sélection multiple et disjointe de colonnes

Pour capturer une plage continue de champs, le trait d’union sert d’intervalle. Appliquée à servers.csv avec la virgule comme délimiteur, la syntaxe cut -d ',' -f 1-3 servers.csv rassemble les colonnes 1 à 3 (nom d’hôte, IP et état d’activité).

Extraction d’une plage continue de champs

Lorsque l’on souhaite exclure une clé primaire située au début de ligne et récupérer l’intégralité du reste de l’enregistrement jusqu’au bout, la notation ouverte cut -d ':' -f 2- users.txt remplit parfaitement cet office.

Récupération de tous les champs à partir de la position 2

Découpage à largeur fixe par caractères (-c) et octets (-b)

Face à des formats textuels à colonnes fixes dépourvus de séparateurs explicites, l’option -c extrait des segments de texte positionnels. La commande cut -c 1-5 users.txt prélève les cinq premiers caractères de chaque ligne.

Isolation des cinq premiers caractères de chaque ligne

Le même principe s’applique à un segment médian : l’argument cut -c 5-15 users.txt capture avec précision la portion de chaîne s’étendant du cinquième au quinzième caractère.

Capture d’un intervalle intermédiaire de caractères

Lorsque l’on travaille directement sur l’empreinte binaire des flux bruts ou sur des encodages spécifiques, le paramètre -b opère au niveau de l’octet. L’instruction cut -b 1-8 servers.csv tronque les lignes pour n’en conserver que les 8 premiers octets.

Tronquage d’un bloc de 8 octets en début de ligne

Options avancées : reformatage de sortie et inversion (–complement)

Par défaut, cut restitue les colonnes en réutilisant le séparateur d’origine. L’argument --output-delimiter permet de substituer ce symbole (par exemple par un tube encadré d’espaces) pour rendre la sortie bien plus lisible à l’écran via cut -d ':' -f 1,2,4 --output-delimiter=' | ' users.txt.

Personnalisation du délimiteur d’affichage

Au lieu d’énumérer toutes les colonnes à préserver, le flag --complement inverse la sélection. En exécutant cut -d ',' --complement -f 2 servers.csv, nous éliminons l’adresse IP tout en conservant automatiquement les champs 1, 3 et 4.

Exclusion inversée d’une colonne avec complement

Pour immuniser vos scripts contre les lignes parasites ou malformées dépourvues du séparateur requis, le modificateur -s (--only-delimited) ignore silencieusement les enregistrements non conformes grâce à cut -d ':' -s -f 2 users.txt.

Filtrage strict des lignes contenant le délimiteur

La commande cut demeure un incontournable sous Linux pour effectuer des opérations de filtrage rapides et performantes. En combinant judicieusement ses options au sein de vos pipelines Bash, vous optimiserez considérablement l’analyse de vos fichiers journaux et l’automatisation de vos tâches d’administration système.