loz
Put something exciting between your legs!
Messages : 7 547 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 15 h 46 m 22 s |
|
|
...où l'on apprendra, soulagés, que les regex dans la vraie vie c'est pas si compliqué :
EDIT : les anti-slashes sautent sur le forum, j'ai dû les remplacer par des "|", j'espère que ça reste lisible...
Admettons que nous avons un script qui manipule un nom de fichier (avec son chemin) :
FICHIER="/repertoire/fichier"
Admettons qu'on ait besoin de manipuler ce nom de fichier avec sed, par exemple pour le masquer dans un fichier texte :
TEXTECENSURE="`cat ~moi/source.txt | sed "s/$FICHIER/topsecret/"`"
Argh, ça marche pas.
Ben voui, $FICHIER contient des slashes qui collisionnent ceux de la regex passée à sed.
Qu'à cela ne tienne, il suffit de les échapper avec des antislashes :
FICHIERFORMATTE="`echo "$FICHIER" | sed "s///|//g"`"
Argh ça marche pas, ben voui, il faut échapper ces slashes-là aussi :
FICHIERFORMATTE="`echo "$FICHIER" | sed "s/|//|||//g"`"
Argh, ça marche toujours pas, les deux anti-slashes doivent être interprétés quelque part avant d'être passés à sed, échappez-moi ça :
FICHIERFORMATTE="`echo "$FICHIER" | sed "s/|//|||||//g"`"
Argh, ça marche pas, je suppose qu'ils sont interprétés parce qu'ils sont entre "`", échappons encore :
FICHIERFORMATTE="`echo "$FICHIER" | sed "s/|//|||||||||//g"`"
Yesss, il fallait bien 9 (neuf ) anti-slashes pour en exprimer un. Trivial, non ?
Le plus beau c'est que c'est tiré d'un problème que j'ai rencontré, et qu'après avoir trouvé je me suis rendu compte qu'il y avait un moyen beaucoup plus simple de gérer mon problème
|
|
| |
Message édité 1 fois, la dernière par loz le 06 juin 2006 - 16 h 28. |
| |
« Vivre simplement, pour que simplement d’autres puissent vivre. » (Gandhi)
|
seb.c_38
Messages : 1 252 Inscrit le 07/12/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 16 h 16 m 04 s |
|
|
vi Fichier
:s//\/'/g
:wq
non ?
|
|
| |
Message édité 1 fois, la dernière par seb.c_38 le 06 juin 2006 - 16 h 17. |
| |
|
loz
Put something exciting between your legs!
Messages : 7 547 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 16 h 20 m 41 s |
|
|
Sauf que je suis dans un script, donc hors de question d'utiliser vi.
Et en plus je comprends pas ta commande sous vi (et vi non plus ne comprends pas d'ailleurs).
C'est censé faire quoi ?
|
|
| |
« Vivre simplement, pour que simplement d’autres puissent vivre. » (Gandhi)
|
loz
Put something exciting between your legs!
Messages : 7 547 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 16 h 24 m 57 s |
|
|
Argh, je viens de me rendre compte que la publication de mon post avait mangé presque tous les backslashes !
|
|
| |
« Vivre simplement, pour que simplement d’autres puissent vivre. » (Gandhi)
|
gege38
Modérateur
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 097 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 06 juin 2006 - 16 h 28 m 53 s |
|
|
Le 06 juin 2006 - 16 h 24, loz a écrit :
Argh, je viens de me rendre compte que la publication de mon post avait mangé presque tous les backslashes !
|
Ben figure toi qu'il faut double-backslasher les backslashes ici aussi 
Authentique, j'en veux pour preuve mon topic sur l'install auto d'un Windows
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
seb.c_38
Messages : 1 252 Inscrit le 07/12/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 16 h 49 m 47 s |
|
|
Le 06 juin 2006 - 16 h 20, loz a écrit :
Sauf que je suis dans un script, donc hors de question d'utiliser vi.
Et en plus je comprends pas ta commande sous vi (et vi non plus ne comprends pas d'ailleurs).
C'est censé faire quoi ?
|
C'est egalement de la substitution de characteres ....
mais dans vi
Ca ne marche pas car il manque les tags de debut et de fin.
mais pour en revenir au backslash, il faut effectivement les multiplies pour que ca marche.
|
|
| |
|
loz
Put something exciting between your legs!
Messages : 7 547 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 16 h 59 m 49 s |
|
|
Le 06 juin 2006 - 16 h 49, seb.c_38 a écrit :
Ca ne marche pas car il manque les tags de debut et de fin. |
Tu ne pourrais pas être plus explicite ?
|
|
| |
« Vivre simplement, pour que simplement d’autres puissent vivre. » (Gandhi)
|
seb.c_38
Messages : 1 252 Inscrit le 07/12/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 17 h 31 m 14 s |
|
|
J'ai pas de linux sous les yeux, mais pour faire des substitutions dans vi il faut des balises de depart et de fin:
vi fichier
ma => marque a en debut de fichier
Shift+G => va a la fin
mb => marque b a la fin
:'a,'b s/////g
l'expression ci-dessus va the changer tous les characteres \ par rien
entre les 2 tags 'a et 'b
si tu veux faire sauter les il faut:
:'a,'b s/\\//g
et si tu veux remplacer des / par des il faut:
:'a,'b s////\\/g
C'est clair non ?
Seb.
|
|
| |
Message édité 1 fois, la dernière par seb.c_38 le 06 juin 2006 - 17 h 32. |
| |
|
seb.c_38
Messages : 1 252 Inscrit le 07/12/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 17 h 33 m 51 s |
|
|
merde
j'ai edite le fichier et tout a saute !!!
edit: correctio orthographe
|
|
| |
Message édité 1 fois, la dernière par seb.c_38 le 06 juin 2006 - 17 h 38. |
| |
|
seb.c_38
Messages : 1 252 Inscrit le 07/12/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 17 h 36 m 10 s |
|
|
changer les // en rien
:'a,'b s/\/\///g
changer les \\ en rien:
:'a,'b s/\\\\//g
et changer les // en \\
:'a,'b s/\/\//\\\\/g
et finallement les // en \\
:'a,'b s/\\\\/\/\//g
C'est clair
|
|
| |
|
seb.c_38
Messages : 1 252 Inscrit le 07/12/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 17 h 36 m 48 s |
|
|
c'est bon, j'y touche plus....
|
|
| |
|
loz
Put something exciting between your legs!
Messages : 7 547 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 17 h 58 m 39 s |
|
|
Ok je connaissais pas les marqueurs.
Pour info :%s/etc.// substitue sur toutes les lignes...
|
|
| |
« Vivre simplement, pour que simplement d’autres puissent vivre. » (Gandhi)
|
seb.c_38
Messages : 1 252 Inscrit le 07/12/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 juin 2006 - 18 h 12 m 35 s |
|
|
merci, pour l'info, c'est une commande que j'utilise peu.
La substitution, qd ca arrive, c'est 1 ou 2 lignes, rarement l'integralite du fichier.
Bonne chance avec tes sed :-P
Seb.
|
|
| |
|