Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 11/12/2005, à 19: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, à 18:27)

Hors ligne

#2 Le 11/12/2005, à 20: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, à 01: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, à 19: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, à 02: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, à 14:36

gadjou

Re : [Résolu] Remplacement de texte avec sed + expressions regulières

Parfait. Merci

Hors ligne

Haut de page ↑