Je me relis et me rend compte que j'aurais pu expliciter un peu ce que fais sed dans cette commande (qui en passant devrait plutôt être sed -e "s/\([0-9]*\): NIVEAU \(.*\) ECHEANCE \(.*\) DATE \(.*\)/1円 2円 3円 4円/g" fichier.txt:
o s/motif1/motif2/g indique de remplacer le motif1 par le motif2.
o les parenthèses (protégées par un `\') servent à mémoriser des morceaux trouvés du motif1 pour les réutiliser dans le motif2. Dans motif2, on pourra utiliser 1円 qui sera alors remplacé par le premier morceau mémorisé, 2円 par le second, etc.
o Le motif 1 est en fait une expression régulière qui correspond dans ce cas à la ligne à traiter :
- \([0-9]*\): signifie un nombre quelconque (*) de caractères compris entre 0 et 9, et suivis de `:' (au passage, on mémorise ce nombre sans les `:'.
- NIVEAU \(.*\) ECHEANCE signifie qu'ensuite on a n'importe quel nombre de n'importe quel caractère (.*) entourés par NIVEAU et ECHEANCE. De nouveau les parenthèses mémorise ce qu'on a trouvé entre NIVEAU et ECHEANCE.
- pareil pour la suite...
o Finalement on remplace toute la ligne par les morceaux mémorisés uniquement, séparés par des espaces (1円 2円 3円 4円).
Voilà. L'explication est un peu laborieuse mais en creusant un peu ça devrait être décryptable.
[^] # Re: sed
Posté par tzeentch00 . En réponse au message Découpe de lignes de fichier texte. Évalué à 2.
o s/motif1/motif2/g indique de remplacer le motif1 par le motif2.
o les parenthèses (protégées par un `\') servent à mémoriser des morceaux trouvés du motif1 pour les réutiliser dans le motif2. Dans motif2, on pourra utiliser 1円 qui sera alors remplacé par le premier morceau mémorisé, 2円 par le second, etc.
o Le motif 1 est en fait une expression régulière qui correspond dans ce cas à la ligne à traiter :
- \([0-9]*\): signifie un nombre quelconque (*) de caractères compris entre 0 et 9, et suivis de `:' (au passage, on mémorise ce nombre sans les `:'.
- NIVEAU \(.*\) ECHEANCE signifie qu'ensuite on a n'importe quel nombre de n'importe quel caractère (.*) entourés par NIVEAU et ECHEANCE. De nouveau les parenthèses mémorise ce qu'on a trouvé entre NIVEAU et ECHEANCE.
- pareil pour la suite...
o Finalement on remplace toute la ligne par les morceaux mémorisés uniquement, séparés par des espaces (1円 2円 3円 4円).
Voilà. L'explication est un peu laborieuse mais en creusant un peu ça devrait être décryptable.