Les Allergies
Alimentaires
Posez votre question Signaler

Script shell - écriture dans un fichier

Jérôme - Dernière réponse le 16 déc. 2004 à 19:13
Bonjour,

Je chercher à insérer une valeur à la suite d'un fichier existant avec la commande :

"valeur" >> fichier.txt

mais en évitant que cette valeur aille directement à la ligne suivante dans le fichier.
Quelqu'un saurait si c'est possible juste avec un commande ou un script shell?

La commande doit insérer la valeur à la suite de la dernière ligne du fichier.

Merci d'avance à ceux qui me répondront.

Jérôme
Lire la suite 

Script shell - écriture dans un fichier »

8 réponses
Réponse
+3
moins plus
Salut,

Tu peux essayer par l'intermédiaire de la commande "echo" et de l'option "-n" (empêche le retour à la ligne). Ce qui donnerait :
echo -n $valeur >> fichier.txt
Par contre cette commande n'aura d'effet que lors du prochain ajout. Si comme tu le précises, la "valeur" doit s'incsrire à la suite de ton fichier, c'est la dernière ligne de ton fichier qui ne doit pas avoir de retour à la ligne.

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
sh:/bin/laden: Not found !
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

Je projéte d'installer wwwblast server sous lamppix mini. En effet, wwwblast server est un programme (utilisé en bioinformatique pour l'alignement local de séquences ADN ou acides aminés) installable sous apache dans un répertoire nommé blast mis sous le document root directory d'apache(www par exemple). Ce programme permet d'aligner des séquences "input" en exécutant des scripts cgi. Pour ceci, j'ai besoin de configurer apache pour permettre l'exécution des cgi présents sous me répertoire "blast"
et ce, en modifiant le fichier http.conf par l'ajout de quelques lignes.
Je précise que j'ai déjà effectué ce genre de manoeuvre sous Linux Mdk 9.0 et ça marche.

Le problème avec lamppix c'est qu'on ne peut modifier http.conf qu'à travers un script shell qui va écrire 6 lignes dans ce fichier pour permettre aux cgi de wwwblast server de tourner sous le réperoire blast qu'on créer.

Je précise que :
* le document root directory est : ./opt/lampp/htdocs
* le répertoire de blast est donc : ./opt/lampp/htdocs/blast
* http.conf existe sous /opt/lampp/etc/httpd.conf
* Les 6 lignes à ajouter sont :
[code]
<Directory "./opt/lampp/htdocs/blast">
Options Indexes FollowSymLinks Includes MultiViews ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
[/code]

Pour ceci, je me demande s'il faut utiliser 6 variables (une pour chaque ligne) ou il est possible de mettre les 6 lignes en une seule variable ?

sachant que je vais utiliser la commande :
[code]
echo $variable >> /opt/lampp/etc/httpd.conf
[/code]

Merci d'avance pour votre aide et j'espère que j'étais pas long dans l'explication de mon problème.

Ahmed S.
Ajouter un commentaire
Réponse
+0
moins plus
fait un "diff -uNr " fichier original fichier modifier >>fichier.patch"
puis créer un script qui patchera ton fichier original avec la commande patch

exemple "patch -p0 < fichier.patch"


Bon courage
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Ce code serait il correct ?

[code]

#!/bin/bash

#j'affecte mes lignes
$ligne1 = "<Directory "./opt/lampp/htdocs/blast"> \n"
$ligne2 = "Options Indexes FollowSymLinks Includes MultiViews ExecCGI \n"
$ligne3 = "AllowOverride None \n"
$ligne4 = "Order allow,deny \n"
$ligne5 = "Allow from all \n"
$ligne6 = </Directory> \n"
#j'ajoute mes lignes au fichier http.conf
echo $ligne1 >> /opt/lampp/etc/httpd.conf
echo $ligne2 >> /opt/lampp/etc/httpd.conf
echo $ligne3 >> /opt/lampp/etc/httpd.conf
echo $ligne4 >> /opt/lampp/etc/httpd.conf
echo $ligne5 >> /opt/lampp/etc/httpd.conf
echo $ligne6 >> /opt/lampp/etc/httpd.conf

[/code]

Merci.

Ahmed S.
Ajouter un commentaire
Réponse
+0
moins plus
c'est sur que cela va marcher enfin presque mais si tu as un prog
qui te demande de modifier d'autres endroits dans le fichier
la solution patch est beaucoup plus propre ( c'est ce qui est utilisé pour le kernel )
Alors autant le faire proprement

sinon ton script sera mieux ainsi

#!/bin/bash

#j'affecte mes lignes
ligne1 = "<Directory "./opt/lampp/htdocs/blast"> \n"
ligne2 = "Options Indexes FollowSymLinks Includes MultiViews ExecCGI \n"
ligne3 = "AllowOverride None \n"
ligne4 = "Order allow,deny \n"
ligne5 = "Allow from all \n"
ligne6 = </Directory> \n"
#j'ajoute mes lignes au fichier http.conf
echo $ligne1 >> /opt/lampp/etc/httpd.conf
echo $ligne2 >> /opt/lampp/etc/httpd.conf
echo $ligne3 >> /opt/lampp/etc/httpd.conf
echo $ligne4 >> /opt/lampp/etc/httpd.conf
echo $ligne5 >> /opt/lampp/etc/httpd.conf
echo $ligne6 >> /opt/lampp/etc/httpd.conf

Bon courage
Ajouter un commentaire
Réponse
+0
moins plus
Salut Ahmed S.,

Je suis curieux de savoir si tes séquences sont en "local" ou sur des bases de données publiques.
D'autant plus que curieux que je fais un peu de "bio-info" et que je suis sous Mdk 9.0.

bob031
Ahmed S. - 15 déc. 2004 à 22:33
Salut bob,

Les séquences que j'utilise sont en fait des compilations (mélange) de séquences collectées à partir des banques publiques mais elles sont en "local" comme tu dis.

Voila, j'espère satisfaire ta curiosité !!

A mon tour, je voudrais bien savoir que veux tu dire par peu de bio info sous Mdk 9.0 c'est à dire té étudiant, prof, ingénieur, ... ?

@+

Ahmed S.
bob031- 16 déc. 2004 à 19:13
Salut Ahmed,

Disons que j'essaie de me parfaire à la bio-informatique "chez moi" sous Mdk 9.0.
Sinon mon parcours est très biologie moléculaire + petite formation en informatique ( programmation C,C++, bases de données, un peu d'administration, un peu de réseau).
Voilà pour résumé !!!!!

Bon courage,

bob
Ajouter un commentaire
Ce document intitulé « Script shell - écriture dans un fichier » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?