Extraction de plusieurs lignes avec shell

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. Modérateur
    recuperer tout les lignes entre le debut et la fin
    sed  -n '/^Cacert::/,/==$/p'
    ;-))
    5
    1. 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. 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. Modérateur
    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
    1. Modérateur
      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. Modérateur
        Oui, ou encore avec des doubles quotes :
        sed -n "$a,5p"
        Merci lami20j ;-))
        0
      2. @jipicymerci 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
      3. Modérateur
        @anis_telSalut,

        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
    2. Modérateur
      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. 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
    3. Modérateur
      Salut,
      sed -n '22,29p' fichier
      ,-))
      0
      1. 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