Aller au contenu

modifier la ligne X d un fichier sous linux


niak

Messages recommandés

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 :)

Lien vers le commentaire
Partager sur d’autres sites

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 :yes:

Comment ça c'est bourrin ?

J'ai quand même le droit à un point pour question pour un pingouin, non :chinois:

Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

saintshakajin : :chinois:

#! /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
}

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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 :eeek2:

Lien vers le commentaire
Partager sur d’autres sites

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 :chinois:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...