[LA-discussions] script avec sed |
[ Thread Index |
Date Index
| More linuxarverne.org/discussions Archives
]
Bonjour,
J'ai besoin (pour faire des tablatures d'accordéon diatonique avec lilypond
qui ne possède pas cette fonctionnalité) de faire des remplacements de texte
assez élaborés dans un fichier. J'ai pensé à sed (que je ne connais que très
peu) mais avant d'aller plus loin j'aimerais savoir si le pseudo-code que
j'ai écrit est réalisable avec sed ou non. Et éventuellement je veux bien un
petit coup de main, sachant que le code sera reversé à la communauté sous
licence gpl of course...
(Si vous voulez voir à quoi ressemble ce que je fais avec lilypond allez voir
sur http://www.cartron.org/spip.php?article39.)
executer lilypond fichier.ly > fichier.display.ly
variable clavier = 1
variable tonalite = ""
variable diato = ""
ouvrir le fichier fichier.ly
chercher le texte "kbd = "
s'il existe
sélectionner le texte qui suit jusqu'au prochain séparateur (espace ou saut
de ligne)
stocker ce texte dans la variable diato
chercher le texte "\key "
sélectionner le texte qui suit jusqu'au prochain séparateur (espace ou saut
de ligne)
stocker ce texte dans la variable tonalite
si diato = tonalite
clavier = 1
sinon
clavier = 2
ouvrir le fichier fichier.display.ly
remplacer les 5 premières lignes par Tablature = {
remplacer "^ " par ""
remplacer "_ " par ""
remplacer les deux dernières ligne par }
tant qu'on trouve un {
et tant qu'on n'a pas atteint un }
variable hauteur = ""
variable note = ""
variable duree = ""
prendre le premier groupe de caractères (séparateur espace ou retour ligne)
le stocker dans la variable groupe
si le 2e caractère à partir de la droite est \
splitter le groupe au niveau du \ sans garder le \
stocker la partie de droite (1 ou 2 sinon message d'erreur) dans la variable
clavier
sinon la variable clavier ne change pas
stocker la partie de gauche dans la variable note
sinon stocker le groupe dans la variable note
si la variable note contient un ou plusieurs chiffre suivis éventuellement
d'un ou plusieurs points (.)
splitter après le dernier chiffre ou le dernier .
stocker la partie droite (chiffres et .) dans la variable duree
stocker la partie gauche (lettres et , et ') dans la variable hauteur
sinon stocker le groupe dans la variable hauteur
la variable noteclavier est égale à "hauteur" + "\" + "clavier"
la variable boutonclavier est égale à la correspondance de noteclavier dans
le tableau
splitter la variable boutonclavier en 2 au \
stocker la partie de droite dans la variable corde
stocker la partie de gauche dans la variable case
la variable bouton est égale à "case" + "duree" + "\" + "corde"
remplacer groupe par bouton
aller au groupe de caractères suivant
aller au { suivant
dans fichier.ly remplacer Tablature = { } par le contenu de
fichier.display.ly
sauvegarder fichier.ly
effacer fichier.display.ly
executer lilypond fichier.ly
tableau de correspondance
code noteclavier boutonclavier
101 sol\1 sol\1
102 la\1 la\2
103 si\1 sold\1
104 do'\1 lad\2
105 re'\1 la\1
106 mi'\1 si\2
107 fad'\1 do'\2
108 sol'\1 lad\1
109 la'\1 dod'\2
110 si'\1 si\1
111 do''\1 re'\2
112 re''\1 do'\1
113 mi''\1 red'\2
114 fad''\1 mi'\2
115 sol''\1 dod'\1
116 la''\1 fa'\2
117 si''\1 re'\1
118 re'''\1 red'\1
201 do'\2 do'\3
202 re'\2 re'\4
203 mi'\2 dod'\3
204 fa'\2 red'\4
205 sol'\2 re'\3
206 la'\2 mi'\4
207 si'\2 fa'\4
208 do''\2 red'\3
209 re''\2 fad'\4
210 mi''\2 mi'\3
211 fa''\2 sol'\4
212 sol''\2 fa'\3
213 la''\2 sold'\4
214 si''\2 la'\4
215 do'''\2 fad'\3
216 mi'''\2 sol'\3
--
Cordialement, Daniel Cartron
« Shakespeare n'a jamais existé. Toutes ses pièces ont été écrites par un
inconnu qui portait le même nom que lui. »
Alphonse Allais
---
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion