Sed et moi ca commence a chauffer, quelqu'un a des glacons...?

Sed et moi ca commence a chauffer, quelqu'un a des glacons...? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 23-03-2005 à 18:05:21    

Bonjour a tous, alors la j'ai besoin d'un pro de Sed, et je ne sais pas si il en existe beaucoup... je m'explique:
 
je dois ajouter des lignes en plein milieu d'un fichier de config. Il s'agit d'inserer des données au dessus d'une ligne contenant le flag #2, ca partait bete, mais en shell j'ai pas trouvé grd chose....
 
j'ai reussi a choper le no de la ligne ou est le #2 grace à grep et à cut, et de l'avoir dans une variable, mais apres pour attaqué la partie insertion je patoge depuis des heures....si quelqu'un pouvait m'aider un peu... merci d'avance
 

Reply

Marsh Posté le 23-03-2005 à 18:05:21   

Reply

Marsh Posté le 23-03-2005 à 18:08:29    

gawk parcours le fichier, quand il trouve la ligne où il y a #2 il insère les données avant.
 

gawk '{if ($0 == "#2" ) { print "données"} print $0}' fichier > fichier2


 
Bon la syntaxe est surement fausse mais l'idée est là
 
EDIT : si tu as déjà le numéro de ligne tu peux faire :

gawk -v numligne=48 '{if (NR == numligne) { print "données"} print $0}' fichier > fichier2


Message édité par cycojesus le 23-03-2005 à 18:11:22

---------------
Chết rồi ! ✍ ⌥⌘ http://github.com/gwenhael-le-moine/slackbuilds/
Reply

Marsh Posté le 24-03-2005 à 13:38:03    

merci beaucoup pour la sortie de la galere , ca fonctionne exactement comme je le voulais :)

Reply

Marsh Posté le 24-03-2005 à 22:36:38    

mais par contre, est ce que a la place de "données " je peux mettres des variables? je t'avoue que je suis tres novice en awk :s:s

Reply

Marsh Posté le 24-03-2005 à 22:36:53    

j'ai tenté et ca avait plutot planté....

Reply

Marsh Posté le 25-03-2005 à 10:04:45    

etn95 a écrit :

mais par contre, est ce que a la place de "données " je peux mettres des variables? je t'avoue que je suis tres novice en awk :s:s


il faut passer les variables avec l'option -v :

gawk -v variable_awk=$VARIABLE_SHELL '{...variable_awk...}'


---------------
Chết rồi ! ✍ ⌥⌘ http://github.com/gwenhael-le-moine/slackbuilds/
Reply

Marsh Posté le 25-03-2005 à 13:36:07    

ah putain je suis un petit con, j'ai meme pas pensé que je pouvais mettre 2 fois -v , j'ai essayé le & , la virgule etc etc, mouarf, merci merci encore :D

Reply

Marsh Posté le 25-03-2005 à 18:06:49    

Pour faire plus simple, head et tail sont tes amis.


---------------
"The marketing guys said the HP-35 would be a failure because it was too small, and then we couldn't make them fast enough to meet the demand. The marketing folks don't know everything." - Bill Hewlett
Reply

Marsh Posté le 26-03-2005 à 03:48:45    

c'est pas faux, on redirige le flux de tail et de head en incluant le contenu qu'on veut entre les 2? c'est ce que a quoi tu pensais YupYup?

Reply

Marsh Posté le 28-03-2005 à 13:42:07    

Oui je pensais à un truc comme ça :

Code :
  1. for i in `seq 1 \`wc -l monfichier | awk '{print $1}'\``  ; do LIGNE="`head -$i |tail -1`" ; [opérations sur $MALIGNE] ; done


---------------
"The marketing guys said the HP-35 would be a failure because it was too small, and then we couldn't make them fast enough to meet the demand. The marketing folks don't know everything." - Bill Hewlett
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed