#1 Le 11/12/2005, à 18:41
- gadjou
[Résolu] Remplacement de texte avec sed + expressions regulières
Bonjour,
J'aimerais importer mes fichier .qif générés par money 2001 vers grisbi, or money génére la date sous la forme d'une ligne Djj.mm'aa (avec un . et un ' étrange comme format) alors que grisbi attend Djj/mm/aa (avec 2 /).
Exemple:
[u]dans money[/u]:
D31.12'03
CX
T-70.00
PVirement
L[Liquide]
^
D31.12'03
CX
T-37.82
PAlima
LAlimentation:Nourriture
^
[u]dans grisbi[/u]
D31/12/03
CX
T-70.00
PVirement
L[Liquide]
^
D31/12/03
CX
T-37.82
PAlima
LAlimentation:Nourriture
^
Je pensais régler ça en 2 minutes avec sed, mais je n'arrive pas à le faire aussi facilement. J'ai lu le man de sed et http://www.gnoppix.org/pages/rute/node1 … 0000000000 mais je n'y arrive toujours pas. Quelqu'un pourrait'il me donner la commande (avec en bonus quelques explications). Merci
Dernière modification par gadjou (Le 16/12/2005, à 17:27)
Hors ligne
#2 Le 11/12/2005, à 19:47
- philippe
Re : [Résolu] Remplacement de texte avec sed + expressions regulières
Essaye de regarder là http://marcg.developpez.com/ksh/
Philippe
Hors ligne
#3 Le 13/12/2005, à 00:28
- SithLord
Re : [Résolu] Remplacement de texte avec sed + expressions regulières
Salut,
sed -r -e "s|^D([0-9]{2})\.([0-9]{2})'([0-9]{2})|D\1/\2/\3|g" fichier_money > fichier_grisbi
Linux, c'est Unix en son genre
Backports Ubuntu - http://morgoth.free.fr/ubports
Hors ligne
#4 Le 13/12/2005, à 18:51
- gadjou
Re : [Résolu] Remplacement de texte avec sed + expressions regulières
Ca marche super merci beaucoup SithLord. J'ai presque tout compris. En fait je me compliquait la vie en voulant placer des *
Philippe. Ton site en français est sympa, mais c'est juste un survol de linux qui m'a dans ce cas précis pas beaucoup aider (le lien que j'ai donné est plus complet, mais plus difficile d'accès). Mais merci quand même.
Hors ligne
#5 Le 14/12/2005, à 01:47
- SithLord
Re : [Résolu] Remplacement de texte avec sed + expressions regulières
Salut,
Pour faire TRES court :
man sed pour les options :-) Tu verras que le caractere juste apres la commande "s" (substitute) est pris comme delimiteur "s|ange|demon|" = "s:ange:demon:" = "s/ange/demon/". Quand on manipule des slashs dans les sections (search et/ou replace) c'est agreable de mettre d'autres delimiteurs que / pour eviter d'avoir a "proteger" les / pour eviter de les confondre avec des delimiteurs justement. Il est plus lisible d'ecrire : s|/un/chemin|/autre/endroit| que s/\/un\/chemin/\/autre\/endroit/
Pour les expressions :
^D : La ligne doit commencer par un D majuscule
[0-9] : N'importe quel caractere compris entre 0 et 9
{2} : 2 caracteres (donc 2 chiffres dans notre cas)
\. : Caractere "." (sinon . = n'importe quel caractere)
' : Caractere "'". Pas besoin de proteger, il a pas de signification speciale
g : c'est une option de la commande substitute qui veut dire "global" donc traite toutes les occurences, sinon seul la 1ere occurence est modifiee (man sed pour les autres options)
les parentheses servent a "memoriser" les champs obtenus pour les reutiliser plus tard (les \1 .. \n).
Voila, rien de bien terrible.
Linux, c'est Unix en son genre
Backports Ubuntu - http://morgoth.free.fr/ubports
Hors ligne
#6 Le 14/12/2005, à 13:36
- gadjou
Re : [Résolu] Remplacement de texte avec sed + expressions regulières
Parfait. Merci
Hors ligne