← retour aux snippets

csplit: découper un fichier par regex

Scinder un fichier en morceaux selon des marqueurs (regex) avec noms prédictibles.

objectif

Découper un gros fichier de logs/chapitres en segments dès qu’un motif apparaît.

code minimal

# splitter à chaque ligne commençant par '### '
csplit -f part- -b '%02d.txt' -k -n 2 input.txt '/^### /' '{*}'

utilisation

# conserver les séparateurs en tête de chaque morceau
csplit -f chunk- -b '%03d.md' -k -n 3 doc.md '/^## /' '{*}'

# ignorer la casse
csplit -f section- -b '%02d' -k -n 2 file.txt '/^section/i' '{*}'

variante(s) utile(s)

# découper après N lignes fixes (tous les 1000)
csplit -f x -b '%03d.log' -k -n 3 big.log 1000 '{*}'

notes

  • '{*}' répète jusqu’à la fin du fichier.
  • -k conserve les fichiers déjà créés en cas d’erreur.