Document recapitulatif pour sed

Fermé
vieurou Messages postés 73 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 19 décembre 2007 - 21 sept. 2007 à 10:18
 oeuf - 29 sept. 2007 à 02:59
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
21 sept. 2007 à 11:01
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 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 19 décembre 2007 2
21 sept. 2007 à 11:10
cool ben j'attend ton doc avec impatience

merci de ta réponse
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
21 sept. 2007 à 13:32
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 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 19 décembre 2007 2
21 sept. 2007 à 13:58
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
http://www.dreamwvr.com/sed-info/sed-faq.html
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
21 sept. 2007 à 17:50
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
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
didon t'as pris du gallon: :)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896 > oeuf
24 sept. 2007 à 16:12
Vu que la place était vacante ;-)))

Puisqu'on parle de gallon, je t'offre une pinte ;-)
0
oeuf > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
29 sept. 2007 à 02:59
ah ben merci l'ami!
0
vieurou Messages postés 73 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 19 décembre 2007 2
24 sept. 2007 à 15:14
merci à vous
0