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

Mac OS X Discussion :

Incompréhension avec sed


Sujet :

Mac OS X

  1. #21
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Tu devrais déplacer ton problème dans le bon forum et surtout nous expliquer comment tu exécutes ton fichier:
    Est-ce aussi le cas sous LINUX, ou est-ce un problème typique MacOS ?
    Cordialement.

  2. #22
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Tu as raison...

    Serait il possible à un admin qui passerait par là de déplacer ce fil de discussion dans le forum "Shell d'OS X"

    Par ailleurs, je lance le script via le terminal via la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh monSuperScriptQuiFonctionneEnfin
    Le script ne fonctionne actuellmement pas sous Linux. Il y a des adaptation à faire... Je n'ai pas creusé lesquelles...

    Pour rappel, et pour ne pas relire l'ensemble du sujet pour savoir de quoi il retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ffmpeg -i video.mp4 -f flv out.flv -loglevel quiet -stats 2>&1 | while read -d "$(echo -en '\015')" || [ -n "$REPLY" ]
    do
     echo ${REPLY} | sed -n '/frame=/s/frame=[^0-9]*\([0-9]*\).*/\1/p'
    done
    Cela fonctionne lorsqu'il est lancé dans le terminal, et ne fonctionne plus lorsqu'il est dans un fichier.

    Je suis sous MacOS 10.9

  3. #23
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Tu pourrais commencer par remplacer :

    qui n'est pas portable par :

    ɹǝsn *sıɹɐlos*

  4. #24
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Ok, le printf est mieux que le echo mais le script est du bash et le read -d non plus n'est pas portable.
    Parler d'un script bash et lancer le script via sh, c'est presque comme lancer perl pour executer python
    Cordialement.

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Tu mesures donc mon niveau en bash... En fait je ne parviens pas à lancer le script avec simplement ./monscript (même avec le chmod +x ) du coup j'ai rajouté sh devant. Sans trop me poser de question j'avoue.

    Je crois ne pas bien faire la différence entre les 2, d'autant que si j'ai bien compris, ya tout de même pas mal de choses qui sont valables des 2 cotés...

    Toujours est-il que si vous avez de bons conseils à ce propos et/ou de bonne lecture, je suis preneur :-) car je trouve que ces langages permettent des choses tout à fait agréable et utile.

    Pour en revenir à la solution proposé : Et bien ça fonctionne... donc merci à vous tous.

  6. #26
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Hmmm, je ne savais pas que echo -en '\015' en bash dans un terminal et dans un script bash n'avait pas le même comportement.
    Si quelqu'un a une explication, je suis preneur.
    Cordialement.

  7. #27
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Je n'ai pas d'explication rationnelle, en dehors du fait que j'évite les "echo -n" et "-e" depuis que j'utilise "printf" en shell.

    Il me faudrait un mac pour comprendre ce qui se passe et quel shell est réellement appelé, mais je n'ai pas ça sous la main ...
    ɹǝsn *sıɹɐlos*

  8. #28
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    Par défaut
    Sur OS X, c'est Bash qui est utilisé depuis 10.3, avant c'était tcsh. Je ne sais pas si ça n'a pas changé depuis.

    Mac OS X est basé sur BSD.

    Il y a effectivement des variantes sur les outils de ligne de commande.

    Concernant les outils tels que grep ou awk je ne sais pas si il y a des différences, je fais pas assez de ligne de commande.

    Voici la doc grep pour mac OS X 10.9 :
    https://developer.apple.com/library/...n1/grep.1.html

    Les pros de grep pourront voir si c'est identique au grep Linux.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #29
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Concernant grep et awk, ce sont les implémentations d'origine Unix de BSD donc il y a de grosses différences avec GNU mais la question en suspens porte sur echo.

    "echo" est normalement une builtin de bash mais elle existe aussi en tant que commande en ligne. Cette dernière ne connais pas "-e" et c'est probablement pour ça que le script n'a pas fonctionné. Pourquoi il a appelé le binaire echo au lieu de la builtin est mystérieux, à moins que bash ne change le comportement de la builtin en fonction de l'environnement, de la manière dont il est appelé (bash ou sh) ou quelque chose comme ça.

    POSIX recommande d'éviter d'utiliser echo et de prendre printf.
    ɹǝsn *sıɹɐlos*

  10. #30
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Je pense qu'il y a eu erreur de manipulation: dans le post #22, il dit que le script ne fonctionne pas sous linux.

    Et effectivement, celui-ci ne fonctionne pas sous linux si on l'appelle via sh (non lié à bash), mais si on l'appelle via bash, celui-ci fonctionne.

    Pour moi, il a modifié le echo en printf mais il a ensuite lancé celui-ci via bash et non sh car sinon, il aurait aussi rencontré un problème avec read -d (pour rappel, mon incompréhension est pourquoi le read -d est passant mais pas le echo -e.

    Bon, après je viens de voir un cas à part sur linux:
    Le man de ksh (pdksh) dit que l'option -d pour read est supporté mais pas l'option -e de echo, je me positionne en ksh, je tests et résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # echo -e '\tfoobar'
            foobar
    # read -d ':'
    ksh: read: -d: unknown option
    J'obtiens le résultat inverse...
    Dans le doute, je regarde le ksh et je vois que celui-ci n'est pas le pdksh mais mksh (MirBSD Korn Shell) et quand je regarde son man, on est bien sur le résultat obtenu.
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Incompréhension avec sed et une variable
    Par venturic dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 08/02/2011, 09h30
  2. Recherche avec sed insensible à la casse
    Par _Mac_ dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 12/10/2005, 15h42
  3. Script bash : Pb avec sed
    Par fred64 dans le forum Linux
    Réponses: 3
    Dernier message: 19/08/2005, 11h24
  4. Extraire une valeur d'une ligne avec sed
    Par jojolepabo dans le forum Linux
    Réponses: 6
    Dernier message: 27/10/2004, 09h34
  5. incompréhension avec ado
    Par Orgied dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/05/2004, 18h24

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