Document recapitulatif pour sed

vieurou Messages postés 73 Statut Membre -  
 oeuf -
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

7 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
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 ;-))
0
vieurou Messages postés 73 Statut Membre 2
 
cool ben j'attend ton doc avec impatience

merci de ta réponse
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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 ;-))
0
vieurou Messages postés 73 Statut Membre 2
 
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oeuf
 
http://www.dreamwvr.com/sed-info/sed-faq.html
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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;}};'
;-))
0
oeuf
 
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 :)
0
oeuf
 
didon t'as pris du gallon: :)
0
jipicy Messages postés 41342 Statut Modérateur 4 896 > oeuf
 
Vu que la place était vacante ;-)))

Puisqu'on parle de gallon, je t'offre une pinte ;-)
0
oeuf > jipicy Messages postés 41342 Statut Modérateur
 
ah ben merci l'ami!
0
vieurou Messages postés 73 Statut Membre 2
 
merci à vous
0