December 19, 200421 yr lu tlm, voila a l aide d un script j aimera remplacer 2 petites lignes existantes déja dans un fichier. si je fais un : mon texte blabla >> /home/niak/texte.txt via un script, ca va bien m enregistrer le texte blabla dans texte.txt, mais comment faire pour ecrire le texte blabla sur la ligne 37 par exemple.. via un script, comment faire pour modifier la ligne 38 par exemple ? merci d avance de votre aide :)
December 19, 200421 yr Fichier mymodify.sh : #! /bin/sh if [ ! -f $1 ] then echo "File $1 not found" exit 0; fi NBLINES=`cat $1|wc -l` head -$(($2-1)) $1 > /tmp/mymodify.tmp echo $3 >> /tmp/mymodify.tmp tail -$(($NBLINES-$2)) $1 >> /tmp/mymodify.tmp mv -f /tmp/mymodify.tmp $1 theo@fermat:~/test$ cat > sample_file << EOF > 1 buzz > 2 rex > 3 bo > 4 nothing > 5 hamm > slink > potato > EOF theo@fermat:~/test$ ./mymodify.sh sample_file 4 "etch is the next" theo@fermat:~/test$ cat sample_file 1 buzz 2 rex 3 bo etch is the next 5 hamm slink potato theo@fermat:~/test$ Command line powwa Comment ça c'est bourrin ? J'ai quand même le droit à un point pour question pour un pingouin, non
December 19, 200421 yr bah sinon tu écris la commande vi correspondante, commençant par un :38 (pour aller ligne 28), et tu lance vi en mode batch sur ton fichier... j'ai plus la commande en tête mais man vi est ton ami
December 19, 200421 yr Author Fichier mymodify.sh :CODE #! /bin/sh if [ ! -f $1 ] then echo "File $1 not found" exit 0; fi NBLINES=`cat $1|wc -l` head -$(($2-1)) $1 > /tmp/mymodify.tmp echo $3 >> /tmp/mymodify.tmp tail -$(($NBLINES-$2)) $1 >> /tmp/mymodify.tmp mv -f /tmp/mymodify.tmp $1 CODE theo@fermat:~/test$ cat > sample_file << EOF > 1 buzz > 2 rex > 3 bo > 4 nothing > 5 hamm > slink > potato > EOF theo@fermat:~/test$ ./mymodify.sh sample_file 4 "etch is the next" theo@fermat:~/test$ cat sample_file 1 buzz 2 rex 3 bo etch is the next 5 hamm slink potato theo@fermat:~/test$ Command line powwa icon_mrgreen.gif Comment ça c'est bourrin ? J'ai quand même le droit à un point pour question pour un pingouin, non transpi.gif ok , et par exemple comment pourrai je inserer ce script et cette commande dans un script automatisée permettant d installer un logiciell par exemple; c est a dire executer le fichier mymodify.sh dans un autre script , et lancer la commande dans ce script. merci d avance de votre aide :)
December 20, 200421 yr Author exemple : pour automatiser l install d apache, je cree un fichier install_auto avec dedans : apt-get install phpmyadmin apt-get install apache apt-get php4 dpkg-reconfigure apache ...... ...... ....... et la pour remplacer par ex. les variable <Directory Index .php .html> etc.. par celle ques je veux, j aimerai que dans ce script et bien ca remplace directment ma ligne souhaité par le texte que j'aurai renseigné ! j espere avoir été clair, merci de l aide :) ps : bie sur je peux tjs faire un DirectoryIndex index.html ...... >> /etc/apache/httpd.conf, mais ca me met des lignes en plus et repettes dans l httpd.conf ! d ou l interet de modifier laligne x :)
December 20, 200421 yr ps : bie sur je peux tjs faire un DirectoryIndex index.html ...... >> /etc/apache/httpd.conf, mais ca me met des lignes en plus et repettes dans l httpd.conf ! d ou l interet de modifier laligne x :) mymodify.sh /etc/apache/httpd.conf X "DirectoryIndex index.html"
December 20, 200421 yr Author mymodify.sh /etc/apache/httpd.conf X "DirectoryIndex index.html" hum...mais cela implique qu il me faut un fichier modify.sh a coté de mon script auto.sh .... comment integrer le script present dans modify.sh dans le fichier auto.sh en fait ?
December 20, 200421 yr saintshakajin : #! /bin/sh function mymodify { if [ ! -f $1 ] then echo "File $1 not found" exit 0; fi NBLINES=`cat $1|wc -l` head -$(($2-1)) $1 > /tmp/mymodify.tmp echo $3 >> /tmp/mymodify.tmp tail -$(($NBLINES-$2)) $1 >> /tmp/mymodify.tmp mv -f /tmp/mymodify.tmp $1 }
December 26, 200421 yr Author hum, docn theocrite, je dois mettre dans mon script auto.sh, par ex apres les aptitude apache etc..., ce code de la facon suivante ? : #! /bin/sh apt-get install apache apt-get install mysql ....... ........ function mymodify { if [ ! -f $1 ] then echo "File $1 not found" exit 0; fi NBLINES=`cat $1|wc -l` head -$(($2-1)) $1 > /tmp/mymodify.tmp echo $3 >> /tmp/mymodify.tmp tail -$(($NBLINES-$2)) $1 >> /tmp/mymodify.tmp mv -f /tmp/mymodify.tmp $1 } mymodify /etc/apache/httpd.conf X "DirectoryIndex index.html" c est bien comme ca ou bien ? Edited December 26, 200421 yr by niak
December 26, 200421 yr t'aurais pas pu la poser dans 100% question pour un pingouin... ça valait le coup.
December 26, 200421 yr C'est clair niak : J'ai qu'un 56K sous la main. Il me semble que le passage d'argument ne fonctionne pas comme ça. Au pire, tu fais deux scripts qui s'appellent, c'est pas la mort. Sinon fait moi un up dans deux-trois jours, j'aurais un shell sous la main et mes scripts perso.
December 26, 200421 yr oui et non, moi je mettrai déjà une vérification pour savoir si apache est installé ou non. Et autre chose, je mettrai plutôt APT=`which apt-get` Pour une question de lisibilité et d'esthétique, je mettrais la fonction en début de script et pas au milieu.
December 26, 200421 yr moi dans ton cas, je ferais plutot un truc de ce genre là : cat fichier.conf | sed 's/chaine_a_remplacer/chaine_qui_remplace/' > fichier.tmp mv fichier.tmp fichier.conf comme ça le jour où y'a une modification dans le fichier de conf basique et que tous les numéros de ligne ont changé tu évites le boxon
December 26, 200421 yr pour le coup du sed, j'ai hésité, puis je me suis dit que les gens n'aiment pas sed en genéral... :copain:
December 26, 200421 yr Ben disons que la pérennité du script me semble plus assurée ainsi qu'en jouant avec les numéros de ligne, mais bon chacun fait ce qu'il veut
December 26, 200421 yr Ben c'est clair qu'il y a le choix entre sed, vim, awk, bash, perl etc... Mais moi je ne connais que bash et vi, mais je ne sais pas me servir du dernier pour du traitement automatisé, mais il y a certainement des meilleures façons de faire. EDIT : Quand je parle de Bash, c'est pour désigner par abus de language les scripts shell. Les autres ferons aussi bien l'affaire. Pas la peine de répondre que tsch ou zsh c'est meilleur
December 27, 200421 yr Puisqu'on parle de perl pour faire du remplacement automatisé, voilà un petit lien bien intéressant : http://articles.mongueurs.net/magazines/linuxmag50.html J'aime pas trop perl en général, mais pour ça il faut dire que c'est pratique.
Archived
This topic is now archived and is closed to further replies.