← retour aux snippets

csplit: découper un fichier par motifs

Créer des morceaux d'un fichier en séparant sur des regex, sans perdre de lignes.

objectif

Segmenter des logs ou configs en parties logiques selon des en-têtes ou marqueurs.

code minimal

# découper à chaque ligne commençant par '=== '
csplit -f part_ -b '%02d.txt' -k fichier.log '/^=== /' '{*}'

utilisation

# conserver le séparateur avec -s et réinsérer si besoin
csplit -s -f chunk_ -b '%03d.txt' fichier.txt '/^SECTION:/' '{*}'

variante(s) utile(s)

# découper après N lignes fixes
csplit -f block_ -b '%03d.txt' fichier.txt 100 '{*}'

notes

  • '{*}' répète jusqu’à EOF; -k conserve les fichiers existants en cas d’échec.
  • utilisez -n (ou %0Nd) pour largeur des indices.