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 :

sed : Insérer un mot en fin de chaque ligne


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Par défaut sed : Insérer un mot en fin de chaque ligne
    Bonjour,
    J'ai un petit soucis avec sed

    lorsque je tape la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/.*/& '"test"'/' toto.txt > toto2.txt
    avec par exemple toto.txt :
    blabla1
    blabla2
    blabla3

    j'obtiens toto2.txt :
    blabla1
    test
    blabla2
    test
    blabla3
    test

    je ne comprend pas vraiment l'erreur. Est-ce que vous pouvez m'aider ?
    Merci beaucoup !!

  2. #2
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ sed 's/$/test/' plop 
    blabla1test
    blabla2test
    blabla3test

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par Titened Voir le message
    Bonjour,
    J'ai un petit soucis avec sed

    lorsque je tape la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/.*/& '"test"'/' toto.txt > toto2.txt
    Pour insérer en fin de ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/$/ test/' toto.txt > toto2.txt
    [EDIT] grillé...[/EDIT]

    avec par exemple toto.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    blabla1
    blabla2
    blabla3
    j'obtiens toto2.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    blabla1
    test
    blabla2
    test
    blabla3
    test
    je ne comprend pas vraiment l'erreur. Est-ce que vous pouvez m'aider ?
    Merci beaucoup !!
    Est-ce que ton fichier vient du (ou a transité par le) monde Windoze?
    aussi pour les données...

  4. #4
    Membre averti
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Par défaut
    Merci pour vos réponses, cependant les commandes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/$/ test/' toto.txt > toto2.txt
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/$/test/' toto.txt > toto2.txt
    ont exactement le même effet que la commande que j'avais tapé précedemment.

    Effectivement mon fichier vient de windows, pourquoi ?

  5. #5
    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
    Citation Envoyé par Titened Voir le message
    Effectivement mon fichier vient de windows, pourquoi ?
    Parce qu'il est formaté à la sauce Windows ;-((

    Fichier au format Unix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat -A plop 
    blabla1$
    blabla2$
    blabla3$
    Conversion au format Windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ unix2dos plop 
    unix2dos: converting file plop to DOS format ...
    Note le caractère "^M" en fin de ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat -A plop 
    blabla1^M$
    blabla2^M$
    blabla3^M$
    Exécution de "sed" sur le format Windows (c'est moche hein ?) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ sed 's/$/test/' plop 
    testla1
    testla2
    testla3
    La même en tenant compte du format Windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ sed 's/^M$/test/' plop 
    blabla1test
    blabla2test
    blabla3test
    $

  6. #6
    Membre averti
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Par défaut
    D'accord... Je le saurais pour la prochaine fois :/
    merci !!


    mais je n'obtiens toujours pas ce que je veux...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sed 's/^M$/test/' toto.txt
    blabla1
    blabla2
    blabla3
    Absence totale de 'test'... :/

  7. #7
    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
    Citation Envoyé par Titened Voir le message
    mais je n'obtiens toujours pas ce que je veux...
    Absence totale de 'test'... :/
    Normal, le "^M" s'obtient par la séquence de touche "CTRL-V" + "CTRL-M" et non avec un accent circonflexe suivi d'un M majuscule

    Accent circonflexe suivi d'un M majuscule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ echo "^M" | od -c
    0000000   ^   M  \n
    0000003
    Séquence de touche "CTRL-V" + "CTRL-M" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ echo "^M" | od -c
    0000000  \r  \n
    0000002

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ajouter un ; a la fin de chaque ligne de mon fichier CSV
    Par pelois dans le forum Conception
    Réponses: 1
    Dernier message: 21/06/2010, 10h24
  2. Réponses: 10
    Dernier message: 16/12/2009, 23h16
  3. Réponses: 5
    Dernier message: 14/04/2008, 16h27
  4. Réponses: 1
    Dernier message: 19/08/2006, 16h02
  5. Réponses: 4
    Dernier message: 19/06/2004, 23h28

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