Extraction de plusieurs lignes avec shell

anis_tel -  
 anis_tel -
salut a tous
je programme un script shell
et je voulai extraire plusieurs lignes successive
par exemple de ligne 22 à la ligne 29 d'un fichier de 44 lignes
merci de m'avoir aider
Configuration: fedora 4

5 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    recuperer tout les lignes entre le debut et la fin
    sed  -n '/^Cacert::/,/==$/p'
    ;-))
    5
    1. anis_tel
       
      merci de m'aider
      ca na pas marcher "recuperer tout les lignes entre le debut et la fin
      sed -n '/^Cacert::/,/==$/p' "
      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      merci une autre fois ;)

      sed -n '$a,29p' fichier

      elle ne donne pas de resultat

      avec a=24 qui est un numeros d'une ligne extrait par : a=` cut -d: -f1 fich `

      merci de m'aider
      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      0
    2. anis_tel
       
      Salut merci de vos conseil

      Je cherche a retarder l'execution d'une fonction sans que ça bloque
      l'ensemble de mon script (comme le fait un sleep)?

      Merci d'avance
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    sed -n '22,29p' fichier
    ,-))
    0
    1. anis_tel
       
      merci pour votre aide

      voila le fichier
      ::::::::::::::::::::::::::::::::::::::::::::::::::::
      aazezer++ frezdsfggerghedtghghetyhy
      tgergdfjotgerktlerotjhktgsrlkdgdlsfkg
      gdsgs gdgdf ergerg greg gerghrtghrtth
      gergdfgdfg rgertgdegde gergerger==
      gdfgdgbvdfgbdfgdf,gdfgdfgdfgdf;gdf
      ::::::::::::::::::::::::::::::::::::::::::::::::::::::
      je veux eliminer les caractere avant ++
      puis mettre le résultat entre deux lignes d'un autre fichier
      merci
      0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Re-

    je veux eliminer les caractere avant ++
    sed 's/.*++ //' fich > plop
    puis mettre le résultat entre deux lignes d'un autre fichier
    sed -i.bak '/motif/r plop' fichier
    Ajoute le fichier "plop" (commande "r" pour "read") après la ligne contenant "motif" dans le fichier "fichier". L'option "-i.bak" crée une sauvegarde du fichier original.
    0
    1. anis_tel
       
      mercie bien
      le probleme rencontrer c'est que les lignes à extraire peut etre repeter dans le fichier mais il non pas le meme contenue malgré qu'il ont le meme debut (Cacert::)et la meme fin(==)
      alors je veut recuperer tout les lignes entre le debut et la fin et les mettre chacun dans un fichier independant
      *************************************************
      Cacert:: jkyhniuybytbyutnuitynuy,iu,
      ,iuy,iuy,oiu;utgnrtbrtfrbtfr
      uyntybyrbvtrbrt,i==
      rtvetyvbuyniu,oiuiu
      trbrtvrtcvrcr
      Cacert:: yytyiuooiuoiu,oiopi,gnfff
      dertvezrtvevtrte
      revtrertevrterevr==
      tyevrevretyrtv
      ****************************************
      Mercie bien de m'aider
      0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut

    pour sed -n '$a,29p' fichier

    elle ne donne pas de resultat

    essaie
    lami20j@debian:~/trash$ cat fichier
    ligne 1
    ligne 2
    ligne 3
    ligne 4
    ligne 5
    ligne 6
    ligne 7
    ligne 8
    ligne 9
    ligne 10
    lami20j@debian:~/trash$ echo $a
    2
    lami20j@debian:~/trash$  sed -n $a',5p' fichier
    ligne 2
    ligne 3
    ligne 4
    ligne 5
    
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Oui, ou encore avec des doubles quotes :
      sed -n "$a,5p"
      Merci lami20j ;-))
      0
      1. anis_tel > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        merci a tous

        je veux parcourir un fichier FICH pour extraire les numéros des lignes
        des meme phrases (XXX) cad :

        ****************************
        FICH
        XXXazozozpzozpopoapzopzopao <-------------
        XXXauazoz,oiz,zoizomiomaoapap <--------------
        oziozozizoaoizjhdhdhdj
        djijkjhdhduizhdbh
        XXXoieyfnyuieyrufy <----------------
        ********************************
        et mettre ces numeros qui sont (1,2,5) chaqu'un dans un fichier

        **************************************************
        je veux connettre comment realiser un boucle dans un shell
        exemple (algorithmique)

        for i=(numeros ou caractere) to (numeros ou caractere)
        do .........
        ********************
        comment comparer le contenus de deux fichiers
        ********************
        Merci a tous ;-(
        0
      2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > anis_tel
         
        Salut,

        il y a des commandes pour faire ça
        si tu veux apprendre des algorithme alors essaie de trouver un bon cours

        dans ton cas tu peux faire une boucle que va incrementer un compteur

        Voilà pour ton algo
        i = 0
        Tant qu'on n'est pas à la fin de fichier
           si la ligne commence avec XXX
             affiche " i+1 ligne"
           sinon
             affiche "ligne"
           On increment i (i = i + 1)
        Fin Boucle

        comment comparer le contenus de deux fichiers
        man diff
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    ca na pas marcher "recuperer tout les lignes entre le debut et la fin
    sed -n '/^Cacert::/,/==$/p' "


    Ben, ça marche
    Le problème ce n'est pas la commande mais les lignes ou plutôt le groupe des lignes (je ne peux pas dire paragraphe) ou la façon dont tu poses la question

    la commande extrait tout entre
    Cacert:: et ==
    si tu regarde ton fichier tu as
    Cacert:: jkyhniuybytbyutnuitynuy,iu,
    ,iuy,iuy,oiu;utgnrtbrtfrbtfr
    uyntybyrbvtrbrt,i==
    rtvetyvbuyniu,oiuiu
    trbrtvrtcvrcr
    Cacert:: yytyiuooiuoiu,oiopi,gnfff
    dertvezrtvevtrte
    revtrertevrterevr==
    tyevrevretyrtv 
    donc le résultat est correct
    lami20j@debian:~/trash$ cat fichier
    Cacert:: jkyhniuybytbyutnuitynuy,iu,
    ,iuy,iuy,oiu;utgnrtbrtfrbtfr
    uyntybyrbvtrbrt,i==
    rtvetyvbuyniu,oiuiu
    trbrtvrtcvrcr
    Cacert:: yytyiuooiuoiu,oiopi,gnfff
    dertvezrtvevtrte
    revtrertevrterevr==
    tyevrevretyrtv
    lami20j@debian:~/trash$ sed -n '/^Cacert::/,/==$/p' fichier
    Cacert:: jkyhniuybytbyutnuitynuy,iu,
    ,iuy,iuy,oiu;utgnrtbrtfrbtfr
    uyntybyrbvtrbrt,i==
    Cacert:: yytyiuooiuoiu,oiopi,gnfff
    dertvezrtvevtrte
    revtrertevrterevr==
    

    0