il te faut utiliser awk pour cela
awk (gawk, nawk ..) execute un script en lisant un fichier ligne par ligne
chaque ligne lue est affectée à la variable $0
une ligne est découpée en champ de $1 à $n... (par defaut l'espace, tabulation sont les séparateurs des champs)
donc il te faut ecrire un script sur cette idée
----lescript.awk-----
ne pas tenir compte des points en début de ligne c'est juste pour la mise en page .....
BEGIN{
..# procedure executée avant de lire les lignes du fichier
..print "DEBUT"
..enregistrementencours=0 # variable de memorisation d'un paragraphe en cours
..# suivant si ton fichier commence ou non par une ligne vide tu devras mettre 1
..tel=0
..nom="nondefini"
}
{
..# maintenant cette procédure sera executée pour chaque ligne du fichier
..if ( $0 == "" )
..{
....if ( enregistrementencours == 1 )
......# tu viens de lire une ligne vide et tu étais entrain de rechercher dans ton paragraphe
......# la présence du no de tel
......if ( tel == 0 )
......{
.........# tu n'as pas trouvé de numero de tel donc tu signale le nom par exemple
.........print $nom
......}
....}
....else
....{
.......# tu viens de trouver un début de paragraphe donc on memémorise
.......enregistrementencours = 1
.......# tu remets à zero tes memoires
.......tel = 0
.......nom="nondefini"
....}
..}
..else
..{
.....# ici tu vas lire suivant le rangement dans tes paragraphes les diverses informations
.....# donc on les détecte comme çà, et on les memorise pour le changement de paragraphe
.....if ( $0 ~ /*employer nom =*/ )
.....{
........nom = $4
.....}
.....if ( $0 ~ /*tel =*/ )
.....{
........tel = 1
.....}
..}
}
END{
..# cette procedure est executée quand toutes les ligne du fichier on été lue
..print "FIN"
}
tu exécuteras tout çà par
$ awk -f lescript.awk lefichier
Poste le Thursday 14 April 2005 19:03:19