[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Découper un fichier texte en plusieurs fichiers en coupant à telle ligne



Le jeudi 28 janvier 2010 à 12:01:53, christophe a écrit :
> Le Wednesday 27 January 2010 21:10:00 Jeremie COURREGES-ANGLAS, vous avez
> écrit :
> > Le mercredi 27 janvier 2010 à 07:38:09, christophe a écrit :
> > > [...]

#!/bin/bash

[ $# -eq 0 ] && printf "Usage : $0 fichier [ autrefichier... ]\n" >&2 && exit 1

# initialisation oubliée
fileno=1

for file_base in "$@"; do

     while read -r line; do

     	# Peu importe le nombre exact de tirets autour de "CUT HERE"
         if [[ "$line" == *"---------- CUT HERE ----------"* ]]; then
             fileno=$((fileno + 1))
             continue
         fi

         # version corrigée
         if [ "$line" != "" ]; then
             echo "$line" >> "$file_base$fileno"
         fi

     done < "$file_base"

 done

> Merci, je viens juste de rentrer . Après avoir essayé : ça me donne bien
> autant de fichiers qu'il y a de messages après le premier. Seul le premier ne
> devient pas un fichier. Inverser les deux boucles à l'intérieur du while ?
> D'autre part, il faudrait juste que je supprime les deux retour à la ligne qui
> restent alors à chaque début de message. Décomment le if et le fi n'a pas
> suffi. Supprimer les "\n" ???
> Merci encore.
>
> --
> christophe

Désolé donc de ne pas avoir passé plus de temps à la vérification de 10 lignes de code...
cette version devrait te donner satisfaction. malheureusement j'ai une mauvaise nouvelle
à t'annoncer : l'exécution du script aura vraisemblablement recopié le contenu du premier
mail à la suite du dernier, dans le fichier de base ; ceci à cause du
     « echo "$line" >> "$file_base$fileno" »
alors que fileno était vide.
Comme quoi un oubli d'initialisation de variable peut être facheux...

Le test [ "$line" != "" ] supprimera _toutes_ les lignes vides de _tous_ tes mails.

Mes excuses pour le désagrément.

--
"Free software, free society."
Jérémie Courrèges-Anglas <ktulu@wxcvbn.org>
GPG key : 1D7E 79DA

Attachment: signature.asc
Description: Digital signature


Reply to: