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 :

Syntaxe commande sed pour effacer


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
    Inscrit en
    Janvier 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 25
    Par défaut Syntaxe commande sed pour effacer
    Bonjour,

    on m'a donné un script sed qui commence par ces 3 blocs semblables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /Setting env. variables.
    *$/,/BUILD: .*
    *$/d
    /^WARNING: .* logout and login .*
    *$/,/^=*
    *$/d
    /All Rights Reserved.
    *$/,/See error log file for details.
    *$/d
    Si je sauve ces 3 lignes dans un fichier filter.sed et que sed dessus comme : echo "hello" | sed -f filter.sed
    La commande échoue :

    sed: file p.sed line 1: unterminated address regex

    Si je fournis à sed le script complet (sed.txt attaché à ce mail) , cela fonctionne.

    Le point est que je ne comprends pas la syntaxe de ces premières lignes, elle ne correspond pas à ce qu'on peut lire dans le manuel.

    Pourrais-je vous demander de l'aide ?

    Cordialement

    Sylvain
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Bonjour,

    Pour t'aider, une commande sed peut contenir un retour à la ligne, tout comme un pattern de recherche.

    Ici, la première commande complète tient sur les lignes 2,3,4.
    Mais étant donné les 2 pattern à rechercher, on est sur du multiligne et donc soit tu lances ton sed en mode multiligne (seul celui de gnu à l'option pour ça), soit il y a des commande avant qui met dans l'espace de travail de sed plusieurs ligne.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 25
    Par défaut
    Salut Disedorgue,

    Merci beaucoup pour ta réponse.

    J'ai bien vérifié que j'utilisais le sed GNU, néanmoins, je ne vois pas dans le man d'option pour lui dire qu'une commande dans le script peut être fractionnée sur plusieurs lignes.
    En outre, dans les 2 cas d'exécution (le script partiel et le script entier), je lance l'exécution de sed avec la même commande : sed -f .
    Donc sed n'a pas l'option multiligne dans les 2 cas, pour autant, dans le second cas, sed fonctionne bien !

    Merci pour tes commentaires.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    En fait, en ouvrant ton script, on voit que c'est des control M (0x0d) qui sont recherchés et non des vrais retour à la ligne (0x0a)

    Donc en fait, par exemple, les lignes sed suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /Setting env. variables.
    *$/,/BUILD: .*
    *$/d
    ne sont qu'une seul ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /Setting env. variables.^M*$/,/BUILD: .*^M*$/d
    où ^M représente le caractère 0x0d et non le caractère 0x0a (qui est le retour à la ligne sous unix)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 25
    Par défaut
    Merci Disedorgue : en effet, les ^M sont mal interprétés par sed. Il suffit de les éliminer avec vi pour que tout fonctionne. J'ai été roulé par visual code qui ne montre pas les caractères spéciaux et les interprète à sa convenance.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par Sylvain Rousseau Voir le message
    J'ai été roulé par visual code qui ne montre pas les caractères spéciaux et les interprète à sa convenance.
    "à sa convenance"?
    je dirais plutôt: comme on lui a demandé de le faire!
    Il y a probablement des options pour paramétrer quel type de retour à la ligne on souhaite (ce n'est pas lui qui décide!)

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

Discussions similaires

  1. syntaxe Commande EAR pour eclipse
    Par stujava dans le forum Websphere
    Réponses: 1
    Dernier message: 10/08/2015, 11h24
  2. commande sed pour découper fichier
    Par wanbihan dans le forum Linux
    Réponses: 8
    Dernier message: 05/06/2012, 14h27
  3. Commande SED pour suppression de blancs ou tabulations
    Par patgabjoe dans le forum Programmation système
    Réponses: 1
    Dernier message: 24/08/2011, 12h19
  4. commande sed pour supprimer
    Par tijocanard dans le forum Linux
    Réponses: 8
    Dernier message: 05/06/2009, 13h37
  5. commande sed pour supprimer des commentaires
    Par Garulfo dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 08/03/2008, 19h09

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