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 POSIX Discussion :

sed sous OpenBSD 6


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut sed sous OpenBSD 6
    Bonjour,
    J'ai un fichier lefile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FILE "01.fichier 1" WAVE
      TRACK 01 AUDIO
        ARTIST "l'artiste"
        TITLE "titre1"
        INDEX 01 00:00:00
    FILE "02.fichier 2" WAVE
      TRACK 02 AUDIO
        ARTIST "l'artiste"
        TITLE "titre2"
        INDEX 01 00:00:00
    avec sed (GNU sed) 4.3 sur debian
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/FILE/!{d;b};N;s/TRACK/truc/' cue.cue
    j'obtiens bien ce que j'attend.
    par contre sur OpenBSD, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: 1: "FILE/!{d;b};N;s/TRACK/ ...: unexpected EOF (pending }'s)
    J'ai essayé tout un tas de truc mais pas moyen.
    Si quelqu'un peut m’éclairer ?
    Merci

  2. #2
    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 ctac_ Voir le message
    avec sed (GNU sed) 4.3 sur debian
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/FILE/!{d;b};N;s/TRACK/truc/' cue.cue
    j'obtiens bien ce que j'attends.
    Sous macos, j'obtiens comme toi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed '/FILE/!{d;b};N;s/TRACK/truc/' 
    sed: 1: "/FILE/!{d;b};N;s/TRACK/ ...": unexpected EOF (pending }'s)
    Par contre, avec "gsed" (installé par sudo port install gsed), j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ gsed '/FILE/!{d;b};N;s/TRACK/truc/' cue.cue
    FILE "01.fichier 1" WAVE
      truc 01 AUDIO
    FILE "02.fichier 2" WAVE
      truc 02 AUDIO
    et j'obtiens le même résultat avec le sed "normal":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ grep -e '^\(FILE\| *TRACK\)' cue.cue | sed -e 's/TRACK/truc/'
    FILE "01.fichier 1" WAVE
      truc 01 AUDIO
    FILE "02.fichier 2" WAVE
      truc 02 AUDIO
    En l'absence de spécifications précises, et compte tenu que les 2 commandes produisent le même résultat sur l'ensemble du jeu de tests, on peut considérer qu'elles sont équivalentes (au moins sur le jeu de tests fourni!).

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 365
    Par défaut
    Bonjour,

    L'erreur est le non respect de la "vraie" syntaxe sed (manque un ";") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/FILE/!{d;b;};N;s/TRACK/truc/' cue.cue

  4. #4
    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 disedorgue Voir le message
    L'erreur est le non respect de la "vraie" syntaxe sed (manque un ";") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/FILE/!{d;b;};N;s/TRACK/truc/' cue.cue
    Moi, je ne demande qu'à te croire!
    C'est juste mon "sed" qui n'est pas d'accord:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed '/FILE/!{d;b;};N;s/TRACK/truc/' cue.cue
    sed: 1: "/FILE/!{d;b;};N;s/TRACK ...": unexpected EOF (pending }'s)

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Par défaut
    Bonjour,
    Merci pour les réponses.
    J'essairais sur le mac de ma fille dés que possible mais je ne sais pas si c'est parce que c'est une fille ou parce que c'est un mac, mais l'acces a l'appareil est trés difficile!
    Avec gsed (pkg_add gsed), ça fonctionne correctement.
    Avec le sed de base, ça fonctionne sur 2 lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /sed '^FILE/!{d;b
    };N;s/TRACK/truc/' cue.cue
    avec la proposition de disedorgue j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed '/FILE/!{d;b;};N;s/TRACK/truc/' cue.cue
    sed: 1: "/FILE/!{d;b;};N;s/TRACK ...: undefined label ''
    Cordialement.

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 365
    Par défaut
    Bon, a priori, la commande 'b' demande un label obligatoire aussi (en principe, si non défini, 'b' saute à la fin du code sed, mais là, ça n'a pas l'air d'être le cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/FILE/!{ d;b xx; };N;s/TRACK/truc/;:xx' cue.cue
    Après, en regardant le man du sed openbsd, je ne suis pas sur que cela fonctionne sur une ligne en séparant les commandes par des ";" (du moins dans le bloc fonction "{....}".

    D'ailleurs, en y regardant de plus près ta commande sed, je ne vois pas pourquoi tu as besoin du 'b', le 'd' le fait implicitement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/FILE/!d;N;s/TRACK/truc/' cue.cue
    devrait être suffisant.

Discussions similaires

  1. Serveur WEB sous OpenBSD
    Par SYNACK dans le forum BSD
    Réponses: 1
    Dernier message: 10/11/2009, 13h03
  2. Modifier la couleur des messages sous OpenBSD
    Par tsing dans le forum BSD
    Réponses: 0
    Dernier message: 16/05/2009, 14h50
  3. Commande exit sous OpenBSD
    Par Olivier Regnier dans le forum BSD
    Réponses: 1
    Dernier message: 04/09/2008, 13h27
  4. Sed sous AIX
    Par dvi24 dans le forum AIX
    Réponses: 2
    Dernier message: 25/06/2008, 19h32
  5. Proxy sous openbsd
    Par edouard21 dans le forum Réseau
    Réponses: 2
    Dernier message: 12/12/2005, 17h23

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