Evaluation des variables d'environnement avec sed - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 06-07-2004 à 09:20:46
Le probleme est que le "$" est un caractère spécial de sed qui veut dire "fin de ligne" donc ca ne va pas sans l' "\"... J'avais déjà essayé... Mais merci qd mm
Marsh Posté le 06-07-2004 à 15:26:42
doncroco a écrit : Le probleme est que le "$" est un caractère spécial de sed qui veut dire "fin de ligne" donc ca ne va pas sans l' "\"... J'avais déjà essayé... Mais merci qd mm |
Le shell (probablement le bash chez toi) va interprété la chaîne de caractère faiblement protégée ("s/\(toto\) \(.*tutu\)/\$USER \2/g" ) et va remplacer le $USER, ceci avant de passer l'argument à sed.
pour t'en convaincre, remplace sed par echo, tu verras.
Marsh Posté le 06-07-2004 à 16:29:39
J'ai déjà essayé avec sed et c clair que ca marche pas... En fait qd on utilise sed, le patron est une chaine de caractère donc non interprétée par le shell (qui est bien un bash)... et si j'essaye en mettant echo à la place de sed ca donne rien de mieux... et si je met des " à la place des ' sed me renvoie une erreur...
Marsh Posté le 06-07-2004 à 21:28:58
|
Rien que de très normal quoi, les ' protegent l'interpretation des variables et pas les ".
Marsh Posté le 06-07-2004 à 23:44:51
oki merci bien, je v tester demain... il devait me manquer le -e
Sympa
Marsh Posté le 07-07-2004 à 09:35:57
Bon ca marche nickel avec $USER... mais pas avec $PWD, ni $HOME (en fait pour dire la vérité j'ai besoin de changer le chemin d'accès à plein de fichiers... mais je trouvais que toto qui porte des tutu c'était plus drole
Est-ce que ca pourrais venir du fait que j'ai la version 4.0.5 ... et pas la 4.1 ?
Marsh Posté le 07-07-2004 à 09:47:18
Ok, c'est bon.... j'ai compris pourquoi je pensais que ca marcherai pas avec PWD et HOME... c'est à cause du "/" qu'ils rajoutent et donc que sed ne comprend plus.... il me reste plus qu'à trouver comment protéger le "/" sans dénaturer le "$" ! Je v finir par passer par le c pour faire tt ca Merci bien à tous pour votre aide
Marsh Posté le 05-07-2004 à 17:08:33
Salut à tous, j'ai un petit script à faire avec sed, je voudrais remplacer une chaine de caractère par une variable d'environnement dans un fichier qui contient que des lignes du style toto porte un tutu...
ca donne qq chose comme ca :
Et donc, comme vous l'avez compris si ca m'affiche que l'utilisateur porte un tutu c'est gagné mais pour l'instant ca m'affiche :
$USER porte un tutu
Si vous savez comment faire pour évaluer cette variable... ca me sauverai la vie (peut-être pas, mais ca m'éviterait de longues heures de remplacement de texte manuel...)