|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 270 ![]() |
Bonjour,
J'ai un soucis, j'ai un sed à faire pour remplacer une chaine par une autre. bon il n'y a pas de soucis de particulier sauf... que cette ligne est un path vers un fichier à rempalcer par un autre path. je ne sais pas comment faire pour faire en sorte que la commande sed n'interprète pas les caractères du path comme des caractère spéciaux. vous auriez une idée? merci |
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 270 ![]() |
Bonjour,
Je suis en train de bosser sur un script bash qui nécessite que je remplace certaines chaînes par d'autres dans un fichier. Donc pour faire cela j'utilise sed, mais j'aimerai savoir comment faire pour utiliser des variables dans cette commande ? Voilà mon script qui ne marche pas : Code :
|
||
|
|
10
|
|
|
#3 | ||
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 534 ![]() |
Code :
![]() normalement la syntaxe : est aussi censée fonctionner. |
||
|
|
20
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 070 ![]() |
Bonjour,
sans davantage de détails, je dirai : changer le séparateur de sed par un caractère qui n'interférera pas. pour les remplacements, ça se fait tout seul : sed 's@/mon/path@/unAutre/path@'; pour les recherches, il faut d'abord protéger le caractère choisi : sed '\@/mon/path/@' |
|
|
10
|
|
|
#5 |
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 270 ![]() |
Ok d'accord. Alors plus compliqué : comment faire pour que le sed n'interprète bien de ce qui se trouve dans les variables comme étant un caractère spécial ou autre?
|
|
|
10
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 534 ![]() |
Citation:
déjà faire ${var} au lieu de $var pour un texte contenant un caractère spécial par exemple le doubler \\,"\ "pour l'espace par exemple ou tout caractère "non-imprimable", \?, \$ etc... attention aussi à bien tester le contenu de la variable avant injection dans les fichiers de sortie...ça évite les surprises (qui sont en générale mauvaises |
|
|
|
00
|
|
|
#7 | ||
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 270 ![]() |
Alors le truc par exemple, c'est que dans un fichier, je dois changer un path par un autre, mais cela de façon dynamique, ça change tout le temps, donc je ne peux pas vraiment doubler les "\" ou mettre les "\" avant tous les caractères spéciaux.
Est-ce que vous auriez un exemple ou corriger l'erreur de mon script ? je m'acharne dessus depuis tout à l'heure sans succès Code :
|
||
|
|
01
|
|
|
#8 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
20
|
|
|
#9 |
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 270 ![]() |
On peut utiliser le # à la place du / pour séparer les morceau de l'expression régulière? je ne connaissais pas du tout.
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Tu peux utiliser le séparateur de ton choix. En admettant que tu n'aies pas de "A" dans ton expression :
Marchera tout aussi bien
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
10
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 534 ![]() |
le premier caractère de la commande substitute de sed sert de séparateur
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com