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 :

Aller un peu plus loin avec sed..


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 138
    Par défaut Aller un peu plus loin avec sed..
    Bonsoir à tous!
    Après pas mal de docs sur sed je commence à comprendre plus ou moins:
    J'ai un fichier toto.txt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AZERTY QWERTY
    AZERTY QWERTY
    AZERTY QWERTY
    j'ai un fichier titi.txt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QWERTY AZERTY 
    QWERTY AZERTY 
    QWERTY AZERTY
    je lance ma commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's/ //g' [FIC] | tr -d '\n' > test.txt
    Le résultat est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AZERTYQWERTYAZERTYQWERTYAZERTYQWERTYQWERTYAZERTYQWERTYAZERTYQWERTYAZERTY
    Le problème c'est qu'il me colle tout , moi je voudrais avoir plutôt ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AZERTYQWERTYAZERTYQWERTYAZERTYQWERTY
    QWERTYAZERTYQWERTYAZERTYQWERTYAZERTY
    OS: Solaris ( UNIX ksh)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sed -s ':flag;N;s/ \|\n//g;bflag' toto.txt titi.txt
    AZERTYQWERTYAZERTYQWERTYAZERTYQWERTY
    QWERTYAZERTYQWERTYAZERTYQWERTYAZERTY
    fonctionne avec GNU sed, peut-être pas avec un autre
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 138
    Par défaut
    Je vais éssayer

    Par contre le sed :'flag;N;s/\n/ /;bflag' [ FIC ] ne fonctionne pas sur Sun
    alors je sais pas si celle la va fonctionner ;-(

  4. #4
    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 séparant chaque instruction avec l'option "-e" et en ne mettant qu'une seule lettre comme étiquette (certaines versions de Sed sont sensibles au nombre de lettres dans une étiquette) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -s -e ':z' -e 'N' -e 's/ \|\n//g' -e 'bz' fichier1 fichier2
    Essaye aussi en mettant les instructions dans un fichier et en appelant ledit fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cat script.sed
    :z
    N
    s/ \|\n//g
    b z
    
    sed -s -f script.sed fich1 fich2

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 138
    Par défaut
    Aucune des commandes ne marchent sur mon SUN
    aucun résultat ou message d'erreur type sed: command garbled

  6. #6
    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
    Alors essaye comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -s -e ':z; N; s/ \|\n//g; bz' fichier1 fichier2
    En respectant les espaces après chaque point-virgule...

  7. #7
    Membre éprouvé Avatar de nowahn
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 84
    Par défaut
    Bonjour,

    L’option -s de sed semble être une extension GNU.
    Tu peux t’en passer en faisant une commande par fichier :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SedCommand=':flag;N;s/ \|\n//g;bflag'
    sed "${SedCommand}" toto.txt > test.txt
    sed "${SedCommand}" titi.txt >> test.txt
    ou quelque chose du genre :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SedCommand=':flag;N;s/ \|\n//g;bflag'
    (sed "${SedCommand}" toto.txt ; sed "${SedCommand}" titi.txt) > test.txt

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

Discussions similaires

  1. Défi : Toutes les semaines un peu de code pour aller plus loin avec Windows 7
    Par Jérôme Lambert dans le forum Développement Windows
    Réponses: 41
    Dernier message: 05/01/2012, 12h00
  2. [RDFa] Pour aller plus loin avec RDFa
    Par dourouc05 dans le forum Web sémantique
    Réponses: 0
    Dernier message: 23/05/2011, 10h12
  3. Aller plus loin avec la sérialisation XML
    Par tomlev dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 04/10/2009, 17h53
  4. Réponses: 4
    Dernier message: 21/08/2009, 14h57

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