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

Unix Discussion :

sed '1d;/fin/d' est elle une commande shell script du type '/er1/,/er2/d'?


Sujet :

Unix

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Novembre 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 156
    Points : 52
    Points
    52
    Par défaut sed '1d;/fin/d' est elle une commande shell script du type '/er1/,/er2/d'?
    Bonsoir!

    Je suis en pleine apprentissage des shell scripts et j'ai encore quelques problèmes à comprendre la commande de suppression:

    Que fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '1d;/fin/d' f3 > f4
    avec:

    debut
    ligne 1
    ligne 2
    ligne 3
    4eme ligne
    fin


    Je sais que

    supprime les lignes allant de la première er1 à la première er2 mais là ce n'est pas le même problème, on a un ";" au milieu... C'est sensé faire deux instructions différentes, non? J'ai l'impression que ça supprime la première et la dernière.

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    exactement

    la seconde avec un ; execute deux instructions (si cohérentes et valables bien sur)

    et attention au bon usage du ";"

    sinon tu généres des erreurs ...
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    francois@baal:~$ cat > toto
    titi
    toto
    er1
    toto
    er1 er2
    tutu
    er2
    tutu
    francois@baal:~$ sed '/er1/,/er2/d' toto
    titi
    toto
    tutu
    er2
    tutu
    francois@baal:~$ sed '/er1/;/er2/d' toto
    sed: -e expression n°1, caractère 6: commande inconnue: `;'
    francois@baal:~$ sed '/er1/ ; /er2/d' toto
    sed: -e expression n°1, caractère 7: commande inconnue: `;'
    francois@baal:~$ sed '/er1/ !d ; /er2/d' toto
    er1
    francois@baal:~$ sed '/er1/ d ; /er2/ !d' toto
    er2
    francois@baal:~$ sed '/er1/ d ; /er2/ d' toto
    titi
    toto
    toto
    tutu
    tutu
    francois@baal:~$ rm t[io]t[io]
    francois@baal:~$

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 262
    Points : 13 518
    Points
    13 518
    Par défaut
    Bonjour

    la seconde avec un ; execute deux instructions
    Sauf que dans la seconde, il n'y a pas de point-virgule.
    Il y a une virgule indiquant une étendue entre la ligne contenant une expression régulière et une autre ligne contenant une autre expression régulière.

    J'ai l'impression que ça supprime la première et la dernière.
    C'est ce que tu vois, mais ce n'est pas ce qui est fait.
    Il y a suppression de la première ligne et de toute ligne contenant le mot fin.

    on a un ";" au milieu.
    C'est une facilité. L'écriture "normale" est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e '1d' -e '/fin/d' f3 > f4

Discussions similaires

  1. ismissing est'elle une commande JS ?
    Par bruno.rotrou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/04/2008, 12h02
  2. Acer est-elle une bonne marque?
    Par SirTurbo dans le forum Ordinateurs
    Réponses: 6
    Dernier message: 30/12/2007, 17h49
  3. Réponses: 2
    Dernier message: 11/07/2007, 14h28
  4. [9iR2] l'heure de fin d'exécution d’une commande ?
    Par Mehdilis dans le forum Oracle
    Réponses: 2
    Dernier message: 02/04/2007, 19h29
  5. Bibliothèque portable ?
    Par Spartan03 dans le forum FMOD
    Réponses: 9
    Dernier message: 27/07/2006, 19h45

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