IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Probleme commande sed


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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....

  2. #2
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    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'

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut
    Voici l'ensemble de mes commandes et leurs resultats:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Mortalink => [~/rendu/shell/bdsh]: sed -i -e 's/lol/lolilou/g' test.txt
     
    Mortalink => [~/rendu/shell/bdsh]: ls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 640
    Par défaut
    bonjour mortalink,

    je crois que tu as dû oublié de mettre un espace entre -i et -e, car en effet, si :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut
    Il y avait bien un espace entre le -i et le -e.
    J'avais déjà tenté sans le -e mais voila :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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]:

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 640
    Par défaut
    tu utilises GNU sed ?
    sinon, il vaudrait peut-être mieux poser la question sur le forum BSD
    ...
    ?
    parce qu'avec GNU sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    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

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. petit probleme avec une commande sed
    Par pschiit dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 31/01/2011, 16h35
  2. Probleme Commande Sed(cygwin)
    Par Soulama dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 30/07/2009, 17h48
  3. probleme avec du shell et la commande sed
    Par cobra85 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 10/04/2009, 16h31
  4. Problème commande sed
    Par Blo0d4x3 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 01/11/2006, 02h40
  5. Problème de SED
    Par melmouj dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 15/03/2006, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo