Sed avec variable contenant des caractères spéciaux
Résolu/Fermé
Georges
-
Modifié par Georges le 22/06/2013 à 16:16
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 22 juin 2013 à 22:02
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 22 juin 2013 à 22:02
A voir également:
- Sed avec variable contenant des caractères spéciaux
- Caractères spéciaux clavier azerty - Guide
- Caractere speciaux - Guide
- Caractères ascii - Guide
- Caractères spéciaux mac - Guide
- 8 caractères exemple - Guide
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
22 juin 2013 à 17:58
22 juin 2013 à 17:58
Salut,
Il suffit de changer le caractère délimiteur par défaut (le slash) par un autre caractère ne se trouvant pas dans ta variable.
Attention aux quotes aussi. Pour interpréter les variables dans une expression, soit il faut entourer l'expression entière par des quotes doubles, soit il faut sortir de l'expression en cas de quotes simples.
Il suffit de changer le caractère délimiteur par défaut (le slash) par un autre caractère ne se trouvant pas dans ta variable.
sed -i "\#${line}#d" 2.txt
Attention aux quotes aussi. Pour interpréter les variables dans une expression, soit il faut entourer l'expression entière par des quotes doubles, soit il faut sortir de l'expression en cas de quotes simples.
sed -i "\#${line}#d" 2.txt sed -i '\#'"${line}"'#d' 2.txt
Utilisateur anonyme
Modifié par qqchquicommenceparQ le 22/06/2013 à 18:33
Modifié par qqchquicommenceparQ le 22/06/2013 à 18:33
salut,
accessoirement, une boucle for ne lit pas des lignes, mais des mots (tels que définis par l'IFS).
le mieux, pour lire un fichier, c'est d'utiliser une boucle while comme ça :
accessoirement, une boucle for ne lit pas des lignes, mais des mots (tels que définis par l'IFS).
le mieux, pour lire un fichier, c'est d'utiliser une boucle while comme ça :
while read line do echo "do stuff with \"$line\"" done < fichier
Merci pour ta réponse zipe31, j'ai testé et ce que tu as indiqué fonctionne parfaitement. Peux-tu juste m'indiquer à quoi correspond le \ devant le premier # dans
Merci également à qqchquicommenceparQ, j'ai modifié mon script en suivant ton conseil.
:)
sed -i "\#${line}#d" 2.txtet pourquoi il n'y a pas de \ devant le 2ème # ?
Merci également à qqchquicommenceparQ, j'ai modifié mon script en suivant ton conseil.
:)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
22 juin 2013 à 22:02
22 juin 2013 à 22:02
Peux-tu juste m'indiquer à quoi correspond le \ devant le premier #
Tout simplement pour faire comprendre à sed qu'on change le délimiteur de motif par défaut par un autre.
et pourquoi il n'y a pas de \ devant le 2ème #
Parce que la syntaxe de sed ne l'exige pas.
Tout simplement pour faire comprendre à sed qu'on change le délimiteur de motif par défaut par un autre.
et pourquoi il n'y a pas de \ devant le 2ème #
Parce que la syntaxe de sed ne l'exige pas.