Document recapitulatif pour sed

bonjour, connaissez vous un site internet ou un doc à télécharger récapitulant une somme d'exemple pour toutes les fonctions de sed (ou la plus grande partie ).
ça meviterai de perdre beaucoup de temp , le man ne donne pas d'exemple et pour trouver une info précise sur le net faut toujours chercher longtemps

par exemple au passage , comment inserer une ligne dans un fichier juste avant la première occurence d'un mot ?
le faire à chaque occurence est simple :
sed   '/\<motif\>/i \chaine_à_inserer' fichier_à_traiter

mais comment le limiter à uniquement la premiere occurence???

merci de vos réponse
Configuration: Linux
Firefox 2.0.0.6

7 réponses

  1. Modérateur
    Salut,

    Tu peux déjà commencer par jeter un œil dans la FAQ de CCM, quelques exemples y sont répertoriés.

    Ensuite, je prépare actuellement une doc sur SED, qui j'espère sera la plus complète possible, en essayant d'expliquer au mieux certaines fonctionnalités très peu documentées et en y joignant justement des exemples concrets.

    En attendant tu peux jeter aussi un œil à "info sed" (si toutefois cette fonctionnalité est installée sur ton système et dont voici sa transcription sur la toile) qui recèle quelques exemples beaucoup plus d'infos que la page de "man".

    Sinon, pour ton problème, je m'y penche car c'est une éventualité à laquelle je n'avais pas pensé encore... je cherche donc ;-))
    1. cool ben j'attend ton doc avec impatience

      merci de ta réponse
      1. Modérateur
        Tiens pour ton problème essaie ça :
        sed   '0,/\<motif\>/{
        i \chaine_à_inserer
        }
        ' fichier_à_traiter
        J'ai pas réussi à l'insérer sur une seule ligne. Si quelqu'un a la solution, je suis preneur ;-))
        1. quelque petit souci avec cette ligne
          sed   '0,/\<motif\>/{ i \chaine_à_inserer}' fichier_à_traiter

          mon script me declare automatiquement des variables du genre :

              entete
              const c0
              const c1
              const c2
              temp r4
              temp b3
              temp r8
              temp v2
              const c0
              const c1
              const c2
              int i1
              int i2...


          et je voudrait inserer une ligne vide entre chaque type de declaration afin d'avoir ça

           entete
              const c0
              const c1
              const c2
          
              temp r4
              temp b3
              temp r8
              temp v2
          
              int i1
              int i2...

          j'ai donc essayé sed -e '0,/\<temp\>/{ i \\n}' fichier mais il me retourne sed: -e expression n°1, caractère 0: `{' non refermée
          en faisant sed -i -e '0,/\<temp\>/ i \\n' fichier je n'ai pas d'erreur mais tous ce qui se trouve au dessus des temp est espace d'une ligne comme ceci
           entete
          
              const c0
          
              const c1
          
              const c2
          
              temp r4
              temp b3
              temp r8
              temp v2
          
              int i1
              int i2...


          un point qui peut peut-etre aider c'est que les types ont toujours le même ordre (les const en premier , temp en second , int ensuite) mais ils se peut qu'il n'y ai pas de variable d'un type donc pas de declaration de ce type (ça peut passer par exemple de const à directement int)
          1. Modérateur
            Merci le z'oeuf ;-))

            Bon, au passage je l'avions déjà celle-là ;-)

            @vieurou : Pour ton histoire d'insertion d'une ligne blanche avant la 1ère occurrence d'un motif et pour ton exemple cité plus haut :
            sed -e '0,/const/{//{x;p;x;}};0,/temp/{//{x;p;x;}};0,/int/{//{x;p;x;}};'
            ;-))
            1. Merci le z'oeuf ;-))

              rends tout de suite ce bookmark il est pas pour toi!!!

              Bon, au passage je l'avions déjà celle-là ;-)

              c'était pour vieurou qui voulait un document récapitulatif :)
            2. didon t'as pris du gallon: :)
            3. Modérateur
              @oeufVu que la place était vacante ;-)))

              Puisqu'on parle de gallon, je t'offre une pinte ;-)