Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/11/2006, 15h47   #1
Rédacteur/Modérateur
 
Avatar de troumad
 
Homme Bernard SIAUD
Enseignant
Inscription : novembre 2003
Messages : 4 400
Détails du profil
Informations personnelles :
Nom : Homme Bernard SIAUD
Âge : 44
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 4 400
Points : 4 944
Points : 4 944
Par défaut Changer des chaînes de caractères dans un fichier

Bonjour

Voici où j'en suis :
Code :
1
2
3
$ cp -f index.php test.php;sed -e 's/"//xorg.conf/"xorg.conf/g' test.php
cp: écraser `test.php'?y
sed: -e expression n°1, caractÚre 6: option inconnue pour `s'
Je suis face à deux problèmes :
Le premier pas grave, ne comprend pas l'option -f du cp (histoire de ne pas casser mon fichier source)
Le second, le centre du problème, je ne connais pas bien l'utilisation de sed et il me semblerais que je devrais faire comme ça pour que ça marche, mais ce n'est pas bon
__________________
Modérateur Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels
troumad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 16h48   #2
Membre habitué
 
Inscription : août 2005
Messages : 118
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 118
Points : 121
Points : 121
Salut
Permier problème :
tu peux toujours supprimer le fichier test.php
Code :
1
2
 
rm -f test.php 2>/dev/null
ou utiliser
Code :
yes |  cp index.php toto.php >& /dev/null
Second problème :
La syntaxe sed n'est pas bonne si tu veux supprimer le / devant xorg.conf, il faut ecrire
Code :
1
2
 
sed -e 's/"\/xorg.conf/"xorg.conf/g'
Sed écrit sur la sortie standard il te faudra donc la rediriger vers un fichier
d-jo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 17h25   #3
Rédacteur/Modérateur
 
Avatar de troumad
 
Homme Bernard SIAUD
Enseignant
Inscription : novembre 2003
Messages : 4 400
Détails du profil
Informations personnelles :
Nom : Homme Bernard SIAUD
Âge : 44
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 4 400
Points : 4 944
Points : 4 944
Merci !

Mon problème est résolu, mais j'en profite pour poser d'autres questions
Pourquoi ce /g} que je trouve toujours à la fin du bloc de commande de sed ?

Pourquoi
Code man cp :
1
2
3
4
5
6
7
       -f     Effacer les fichiers cibles existants (voir ci-dessus).
[...]
       -f, --force
              Effacer les fichiers cibles existants au cas où une ouverture en
              écriture  échoue  et  ne  jamais  demander confirmation.  (C'est
              ainsi depuis file-utils 4.1. Avec file-utils 4.0,  cette  option
              était équivalent à la nouvelle --remove-destination.)
?
Comment on peut se servir de ce -f ? Toi, tu le shuntes ce problème
__________________
Modérateur Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels
troumad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2006, 17h47   #4
Rédacteur/Modérateur
 
Avatar de troumad
 
Homme Bernard SIAUD
Enseignant
Inscription : novembre 2003
Messages : 4 400
Détails du profil
Informations personnelles :
Nom : Homme Bernard SIAUD
Âge : 44
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 4 400
Points : 4 944
Points : 4 944
Maintenant, j'aimerai mettre ça dans un script qui remplace xorg.conf par un variable $1 :
Code :
`echo "sed -e 's/\"\/$1/\"$1/g' \"$racine_developpez/cache/$1/index.php\" > \"$old_pwd/$1/index.php\""`
Ceci génère bien la commande suivante :
Code :
sed -e 's/"\/xorg.conf/"xorg.conf/g' "/home/bs/developpez.com/cache/xorg.conf/index.php" > "/home/bs/developpez.com/site/Linux/serveurX/xorg.conf/index.php"
Mais il y a aussi cette erreur :
Code :
sed: -e expression n°1, caractÚre 1: commande inconnue: `''
__________________
Modérateur Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels
troumad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2006, 08h45   #5
Rédacteur/Modérateur
 
Avatar de troumad
 
Homme Bernard SIAUD
Enseignant
Inscription : novembre 2003
Messages : 4 400
Détails du profil
Informations personnelles :
Nom : Homme Bernard SIAUD
Âge : 44
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 4 400
Points : 4 944
Points : 4 944
Voici la réponse pour le sed automatique :
Code :
`echo "sed -e {s@\"/$1@\"$1@g} $racine_developpez/cache/$1/index.php"` > "$old_pwd/$1/index.php"
__________________
Modérateur Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels
troumad est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h59.


 
 
 
 
Partenaires

Hébergement Web