connaissez vous un site internet ou une 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 info sed n'en donne que peut, 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 du texte???
merci de vos réponse
# rechercher/remplacer
Posté par NeoX . Évalué à 2.
cela devrait changer le texte toto en XXXtoto
sed -e 's/$motif/$chaine$motif/' fichier
et si tu veux le faire pour toute les occurences
sed -e 's/$motif/$chaine$motif/g' fichier
enfin chez moi c'est comme ca que ca marche.
je penses que le MAN te donne toute les infos, apres il faut trouver comment combiner les options et les regexp
et surtout se SIMPLIFIER la vie
ton probleme : inserer un chaine avant un motif
la solution : rechercher le motif, le remplacer par chaine+motif
[^] # Re: rechercher/remplacer
Posté par eric . Évalué à 2.
mon script me declare automatiquement des variables du genre :
et je voudrait inserer une ligne vide entre chaque type de declaration afin d'avoir ça
donc si je fais sed -e 's/$motif/$chaine$motif/' fichier avec motif='temp' et chaine='\n' j'aurais un retour chariot entre chaque temp et avec sed -e 's/$motif/$chaine$motif/g' fichier egualement
[^] # Re: rechercher/remplacer
Posté par NeoX . Évalué à 2.
[^] # Re: rechercher/remplacer
Posté par gaaaaaAab . Évalué à 4.
# fais bosser ton imagination
Posté par gaaaaaAab . Évalué à 2.
- avec awk (pas trop compliqué, mais moyen performant),
- en utilisant l'option -c de grep et une habile combinaison de head et de tail dans tous les sens (p-e pas super efficace, mais ça doit être rigolo à écrire =)
- en encapsulant tes regex dans un langage de script de plus haut nieveau (python, perl, ruby, ...)
bref, innove ! :-)
[^] # Re: fais bosser ton imagination
Posté par eric . Évalué à 1.
[^] # Re: fais bosser ton imagination
Posté par gaaaaaAab . Évalué à 2.
Le problème fondamental, c'est que sed travaille ligne par ligne, et là, tu veux faire quelquechose pour lequel il faut travailler sur plusieurs lignes. Forcément, ça va être compliqué ...
en repartant de ton exemple dans un commentaire ci dessus, une proposition en awk :
awk 'BEGIN{prev="unset"} /^const\>|^int\>|^temp\>/ {if (prev != $1) print ""; print $0; next} {print}'
attention, cette version ne fonctionne que si tes identifiants (int, const ou autre) sont en début de ligne puisque $1 représente le premier élément de la ligne.
C'est pas le hello world du awk, donc l'opportunité d'apprendre quelques trucs de plus ;)
man awk pour plus de détails, et pose d'autres questions si tu t'en sors pas !
[^] # Re: fais bosser ton imagination
Posté par gaaaaaAab . Évalué à 2.
awk 'BEGIN{prev="unset"} /^const\>|^int\>|^temp\>/ {if (prev != $1) print ""; print $0; prev = $1; next} {print}'
[^] # Re: fais bosser ton imagination
Posté par eric . Évalué à 1.
je teste et je reviens poster si j'ai trop de mal
# Suffit de demander...
Posté par liberforce (site web personnel) . Évalué à 6.
[^] # Re: Suffit de demander...
Posté par eric . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.