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 25/01/2011, 11h48   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Par défaut Probleme commande sed

Bonjour je tente d'effectuer, a l'aide de la commande 'sed', le remplacement d'un mot dans un fichier.

J'ai donc, comme indiqué un peu partout, utilisé cette expression:

Code :
sed -i -e 's/mot_a_remplacer/nouveau_mot/' file.txt
Le soucis est que apres que la commande se soit exécutée, les mots ont bien été remplaces dans 'file.txt' mais il est apparu un 'file.txt-e', je ne vois pas ou est l'erreur....
mortalink est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 12h00   #2
Membre habitué
 
Développeur informatique
Inscription : juillet 2002
Messages : 96
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juillet 2002
Messages : 96
Points : 120
Points : 120
Bonjour,


Je viens de tester ta commande et je n'ai pas l'ombre d'un fichier ayant les carractéristiques de ton fichier nouvellement créé.

Tu es sur que ce fichier ne viens pas d'une autre manipulation que tu aurais fait avant ?
La création est systématique ?
A chaque fois que tu executes la commande, ce fichier est recréé même apres l'avoir supprimé ?

Au fait qu'est ce qu'il y a dans ce nouveau fichier ?

Cordialement


pour info 'sed version 4.2.1'
__________________
Je connais des gens qui ne sont pas aware, il ne sont pas qu courant. il ne sont pas a l'attention de savoir qu'ils existent.
"J-C Van dam"
Lharuun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 12h15   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Voici l'ensemble de mes commandes et leurs resultats:


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Mortalink => [~/rendu/shell/bdsh]: ls
 
#bdsh.sh# bdsh.sh   test.txt
 
Mortalink => [~/rendu/shell/bdsh]: cat test.txt 
 
putain
 
 
lol
 
 
lol
 
key=10
Code :
1
2
3
Mortalink => [~/rendu/shell/bdsh]: sed -i -e 's/lol/lolilou/g' test.txt
 
Mortalink => [~/rendu/shell/bdsh]: ls
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
#bdsh.sh#  bdsh.sh    test.txt   test.txt-e
 
Mortalink => [~/rendu/shell/bdsh]: cat test.txt
 
putain
 
 
lolilou
 
 
lolilou
 
key=10
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Mortalink => [~/rendu/shell/bdsh]: cat test.txt-e
 
putain
 
 
lol
 
 
lol
 
key=10
 
Mortalink => [~/rendu/shell/bdsh]:


---------------------------------------------------------------------


a noter que je suis sous freebsd 5.5
mortalink est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 13h04   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 069
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 069
Points : 4 145
Points : 4 145
bonjour mortalink,

je crois que tu as dû oublié de mettre un espace entre -i et -e, car en effet, si :
Code :
1
2
3
4
5
$ ls 
monCacatoes.txt
$ sed -i-e 's/cacatoes/chien/' monCacatoes.txt
$ ls 
monCacatoes.txt monCacatoes.txt-e
sinon, le -e n'a rien d'obligatoire, ni d'indispensable.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 13h12   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Il y avait bien un espace entre le -i et le -e.
J'avais déjà tenté sans le -e mais voila :


Code :
1
2
3
4
5
6
7
8
Mortalink => [~/rendu/shell/bdsh]: ls
#bdsh.sh# bdsh.sh   test.txt
Mortalink => [~/rendu/shell/bdsh]: sed -i 's/value/10/' test.txt
sed: 1: "test.txt": undefined label 'est.txt'
Mortalink => [~/rendu/shell/bdsh]: sed -i -e 's/value/10/' test.txt
Mortalink => [~/rendu/shell/bdsh]: la
#bdsh.sh#  .          ..         bdsh.sh    test.txt   test.txt-e
Mortalink => [~/rendu/shell/bdsh]:
mortalink est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 13h31   #6
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 069
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 069
Points : 4 145
Points : 4 145
tu utilises GNU sed ?
sinon, il vaudrait peut-être mieux poser la question sur le forum BSD
...
?
parce qu'avec GNU sed :
Code :
1
2
3
4
5
sed --help
[...]
  -i[SUFFIXE], --in-place[=SUFFIXE]
                 éditer les fichiers à leur place (fait une
                 sauvegarde si l'extension est fournie)
il faut qu'il n'y ait pas d'espace.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2011, 15h40   #7
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 978
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 978
Points : 5 995
Points : 5 995
Bonjour.

Citation:
Envoyé par N_BaH Voir le message
tu utilises GNU sed ?
Sous FreeBSD je pense que c'est sed POSIX et pas GNU, à vérifier.

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 20h27   #8
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Essaye en mettant une extension à ton switch "-i" :

Code :
sed -i.bak 's/value/10/' test.txt
Je viens de tester sur un serveur "freenas" avec les mêmes symptômes que les tiens et en forçant l'extension, ça passe ;-)

Apparemment il semblerait que ce soit le comportement par défaut sur les versions BSD pour le switch "-i", extrait du man sed FreeBSD

Code :
1
2
3
4
5
6
     -i extension
	     Edit files in-place, saving backups with the specified extension.
	     If a zero-length extension is given, no backup will be saved.  It
	     is not recommended to give a zero-length extension when in-place
	     editing files, as you risk corruption or partial content in situ-
	     ations where disk space is exhausted, etc.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h54.


 
 
 
 
Partenaires

Hébergement Web