Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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