Menu Fermer

Utiliser la commande Linux Csplit avec des exemples

La commande Linux csplit est un utilitaire polyvalent utilisé pour diviser un fichier en plusieurs segments sur la base de lignes de contexte ou de motifs spécifiés. Contrairement à la commande split, qui divise les fichiers en fonction de leur taille, csplit permet aux utilisateurs de définir des points de division à l’aide de numéros de ligne, d’expressions régulières ou d’une combinaison des deux, ce qui en fait un outil idéal pour traiter les fichiers texte dont la structure est prévisible.
La commande génère des fichiers de sortie nommés séquentiellement, avec un préfixe par défaut et des suffixes numériques, qui peuvent être personnalisés. Cette flexibilité est particulièrement utile pour des tâches telles que l’extraction de sections de fichiers journaux, le découpage de fichiers de configuration ou la préparation de données textuelles en vue de leur traitement par d’autres scripts ou applications.

Dans ce tutoriel, je vous montre comment utiliser cette commande de base Linux avec des exemples.

Utiliser la commande Linux Csplit avec des exemples

Quelle est la syntaxe de la commande csplit

La commande csplit sur Linux est utilisée pour diviser un fichier en plusieurs parties en fonction des motifs de texte spécifiés ou des lignes. C’est un outil pratique pour scinder un fichier texte en plusieurs sous-fichiers de manière contrôlée et automatique. Voici un guide sur l’utilisation de csplit :

Voici la syntaxe de la commande :

csplit <options> <fichier> <modèle1 modèle2 ...>

Où :

  • fichier : Le fichier à diviser
  • modèle : Un modèle ou une expression régulière pour déterminer les points de séparation dans le fichier

Voici la liste des options de la commande :

OptionsDescription
-b, –suffix-format=FORMATUtilise sprintf FORMAT au lieu de %02d
-k, –keep-filesNe pas supprimer les fichiers de sortie en cas d’erreur
–suppress-matchedSupprime les lignes correspondant à PATTERN
-n, –digits=DIGITSUtilise le nombre de chiffres spécifié au lieu de 2
-s, –quiet, –silentN’imprime pas le décompte des tailles des fichiers de sortie
-z, –elide-empty-filesSupprimer les fichiers de sortie vides
–helpAffiche cette aide et quitte
–version
Affiche les informations sur la version et quitte

Comment utiliser la commande csplit avec des exemples

Comment diviser des fichiers en fonction du nombre de lignes ?

Supposons que votre fichier contienne six lignes et qu’il faille le diviser à la troisième ligne.

1 Debian
2 Ubuntu
3 Mint Linux
4 Fedora
5 Arch Linux
6 Nitrux

Cela peut se faire en passant ‘3’ comme argument après la commande et le nom du fichier.

csplit fichier 3

Les nombres produits dans la sortie sont le nombre d’octets des fichiers produits par la commande. Deux fichiers ont été produits dans la sortie, à savoir xx00 et xx01.

Comment diviser des fichiers en fonction du nombre de lignes dans Linux

Comment découper des fichiers à l’aide d’expressions régulières ?

Autre exemple, pour diviser un fichier chaque fois qu’une ligne contenant “Fedora” apparaît :

csplit fichier '/Fedora/' '{*}'

Voici les explications :

  • '/Fedora/' indique le motif à trouver pour effectuer une division
  • '{*}' signifie que la commande doit continuer à diviser jusqu’à la fin du fichier

On obtient bien deux fichiers divisés sur la ligne contenant Fedora.

Comment découper des fichiers à l'aide d'expressions régulières avec la commande csplit

Comment avoir un préfixe personnalisé au lieu du préfixe par défaut « xx » ?

Par défaut, les fichiers que csplit produit en sortie ont pour préfixe ‘xx’. Cependant, si vous le souhaitez, vous pouvez changer le préfixe en utilisant l’option de ligne de commande -f, qui requiert le nouveau préfixe en entrée.

csplit -f malekal fichier '/Arch/' '{*}'
Comment avoir un préfixe personnalisé au lieu du préfixe par défaut « xx » avec csplit

Comment forcer csplit à ne pas supprimer les fichiers de sortie en cas d’erreur ?

Par défaut, la commande csplit supprime les fichiers de sortie s’il existe déjà.
Vous pouvez modifier ce comportement en utilisant l’option -k dans la commande. Par exemple, la même commande a été exécutée à nouveau, mais avec cette option, et les fichiers de sortie n’ont pas été supprimés cette fois.

csplit -k fichier 3

Comment supprimer les lignes qui correspondent à un motif d’entrée ?

Pour supprimer une ligne qui correspond à un motif, utilisez l’option –suppress-matched.
Par exemple, ici on demande à diviser le fichier à la ligne 3.

csplit --suppress-matched fichier 3

On voit que celle-ci n’est pas présente dans les fichiers de sortie.

Comment supprimer les lignes qui correspondent à un motif d'entrée dans Linux

Spécifier le nombre de chiffres dans les noms de fichiers

Pour générer des fichiers avec des numéros à trois chiffres :

csplit -n 3 fichier '/Fedora/' '{*}'