Caractères spéciaux interprétés (à tort)
Résolu
jeanne38
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
jeanne38 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
jeanne38 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un petit probleme avec le sed de mon script bash shell :
$CADP_TIME
contient
/common/bin.sun5/memtime
echo $CADP_TIME | sed -e "s./.\\/.g"
me retourne
\/common\/bin.sun5\/memtime
ce qui me va pour la suite de mon programme, pour pouvoir traiter les caractères spéciaux.
OR
quand je fais : (le . est le séparateur du sed pour la lisibilité)
EXPANDED_CADP_TIME='echo $CADP_TIME | sed -e "s./.\\/.g"'
echo "$EXPANDED_CADP_TIME"
j'ai la valeur
/common/bin.sun5/memtime
et non pas
\/common\/bin.sun5\/memtime
C'est comme si \/common\/bin.sun5\/memtime était interprété dans la variable EXPANDED_CADP_TIME.
Comment faire pour qu'elle ne le soit PAS ?
Car ensuite je fais :
cat $SVL_LOG | sed -e 's/$EXPANDED_CADP_TIME //'
pour remplacer $EXPANDED_CADP_TIME par rien
et bien sur la chaine contenue dans $EXPANDED_CADP_TIME n'est pas trouvée, à cause des / qui ne sont pas précédés de \
et donc pas trouvée = pas substituée ...
Merci par avance aux pros du shell !!
J'ai un petit probleme avec le sed de mon script bash shell :
$CADP_TIME
contient
/common/bin.sun5/memtime
echo $CADP_TIME | sed -e "s./.\\/.g"
me retourne
\/common\/bin.sun5\/memtime
ce qui me va pour la suite de mon programme, pour pouvoir traiter les caractères spéciaux.
OR
quand je fais : (le . est le séparateur du sed pour la lisibilité)
EXPANDED_CADP_TIME='echo $CADP_TIME | sed -e "s./.\\/.g"'
echo "$EXPANDED_CADP_TIME"
j'ai la valeur
/common/bin.sun5/memtime
et non pas
\/common\/bin.sun5\/memtime
C'est comme si \/common\/bin.sun5\/memtime était interprété dans la variable EXPANDED_CADP_TIME.
Comment faire pour qu'elle ne le soit PAS ?
Car ensuite je fais :
cat $SVL_LOG | sed -e 's/$EXPANDED_CADP_TIME //'
pour remplacer $EXPANDED_CADP_TIME par rien
et bien sur la chaine contenue dans $EXPANDED_CADP_TIME n'est pas trouvée, à cause des / qui ne sont pas précédés de \
et donc pas trouvée = pas substituée ...
Merci par avance aux pros du shell !!
A voir également:
- Caractères spéciaux interprétés (à tort)
- Caractère spéciaux - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caractères ascii - Guide
- Raccourcis clavier word caractères spéciaux pdf - Guide
4 réponses
Salut,
Déjà pour ton 1er problème essaye ça plutôt :
Ensuite pour ton second problème, remplace tes quotes simples par des quotes doubles et change de séparateurs aussi :
Déjà pour ton 1er problème essaye ça plutôt :
EXPANDED_CADP_TIME=$(echo $CADP_TIME | sed -e "s./.\\/.g")Ça devrait aller mieux.
Ensuite pour ton second problème, remplace tes quotes simples par des quotes doubles et change de séparateurs aussi :
cat $SVL_LOG | sed -e "s#$EXPANDED_CADP_TIME##";-))
Bonjour,
Voila les résultats pour tes suggestions (en /bin/sh) :
> /bin/sh
$ EXPANDED_CADP_TIME=$(echo $CADP_TIME | sed -e "s./.\\/.g")
syntax error: `EXPANDED_CADP_TIME=$' unexpected
-> Il n'a pas l'air d'aimer les parenthèses !
J'essaie avec ça :
$ EXPANDED_CADP_TIME=$"`echo $CADP_TIME | sed -e 's./.\\/.g'`"
$ echo $EXPANDED_CADP_TIME
$/common/bin.sun5/memtime
pas bon ...
J'essaie avec ça :
$ EXPANDED_CADP_TIME=$`echo $CADP_TIME | sed -e 's./.\\/.g'`
$ echo $EXPANDED_CADP_TIME
$/common/bin.sun5/memtime
pas bon non plus ...
Je m'y perds moi avec ces "" `` '' ....
Voila les résultats pour tes suggestions (en /bin/sh) :
> /bin/sh
$ EXPANDED_CADP_TIME=$(echo $CADP_TIME | sed -e "s./.\\/.g")
syntax error: `EXPANDED_CADP_TIME=$' unexpected
-> Il n'a pas l'air d'aimer les parenthèses !
J'essaie avec ça :
$ EXPANDED_CADP_TIME=$"`echo $CADP_TIME | sed -e 's./.\\/.g'`"
$ echo $EXPANDED_CADP_TIME
$/common/bin.sun5/memtime
pas bon ...
J'essaie avec ça :
$ EXPANDED_CADP_TIME=$`echo $CADP_TIME | sed -e 's./.\\/.g'`
$ echo $EXPANDED_CADP_TIME
$/common/bin.sun5/memtime
pas bon non plus ...
Je m'y perds moi avec ces "" `` '' ....
Voilà ce que ça donne chez moi (par contre j'ai rajouté un anti-slash à l'expression de sed, je n'avais pas testé hier et il s'avère qu'il en manquait un...) :
jp@MDK:~/tmpfs ssh$ CADP_TIME="/common/bin.sun5/memtime" jp@MDK:~/tmpfs ssh$ EXPANDED_CADP_TIME=$(echo $CADP_TIME | sed -e "s./.\\\/.g") jp@MDK:~/tmpfs ssh$ echo $EXPANDED_CADP_TIME \/common\/bin.sun5\/memtime jp@MDK:~/tmpfs ssh$;-))