Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2810 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script shell pour modifier un fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script shell pour modifier un fichier texte

n°557105
kjb
Posté le 15-09-2004 à 08:05:34  profilanswer
 

Je suis certain que c'est simple mais... JE NE SAIS PAS FAIRE.
J'ai par exemple un fichier FIC contenant :
 
ceci est
un exemple
1234 5678 9012
de fichier
 
 
Je voudrais pouvoir remplacer par exemple la chaîne 5678 par une chaîne envoyée en argument.
 
Comment faire en sh ou bash? Je saurais éventuellement faire ça en Perl mais je n'ai pas l'interpreteur installé (et je ne peux pas l'installer...).
 
Merci.


---------------
Tu sais que tu ne sais rien? Tu es sur la voie de la sagesse
mood
Publicité
Posté le 15-09-2004 à 08:05:34  profilanswer
 

n°557112
labbepierr​e
Posté le 15-09-2004 à 08:44:31  profilanswer
 

avec la commande sed : man sed

n°557130
kjb
Posté le 15-09-2004 à 09:13:01  profilanswer
 

La commande sed permet de remplacer une chaîne précise non? je ne sais pas si ça résoudrait mon problème.
Je vais être plus précis, je veux modifier une adresse IP dans un fichier. Cette adresse IP je ne la connaît pas d'avance, je sais par contre qu'elle se trouve juste en dessous d'une ligne de commentaire donnée.
Par exemple :
#####################################################
 
# xxx.xxx.xxx.xxx représente l'adresse IP a modifier
ACCEPT  net:xxx.xxx.xxx.xxx  loc 3389
 
##########################################################
 
Lorsque le script accède au fichier, il y a déjà une adresse IP de renseignée, il faut donc la modifier.
C'est une règle de filtrage sur un firewall. Le script va recevoir en argument l'adresse IP a autoriser. Il doit donc modifier la règle en mettant à jour l'adresse IP.
 
Est-ce possible? je pense que oui mais je ne vois pas....


---------------
Tu sais que tu ne sais rien? Tu es sur la voie de la sagesse
n°557133
freyr
Posté le 15-09-2004 à 09:15:28  profilanswer
 

ben ne met pas en brute la valeur de l'adresse IP, utilise plutot des variables
tous les parametres passés à un scripts sont récupérables par les variables $1 $2 $3...
$0 etant le nom du script


---------------
Dommage :-) | chess games
n°557135
kjb
Posté le 15-09-2004 à 09:27:34  profilanswer
 

Oui l'adresse IP serait passée au shell script en argument donc je la récupère bien avec un $1 met ensuite il s'agit d'aller mettre à jour le fichier de configuration du firewall. Dans ce fichier là tout doit (je pense) être affiché.
Je pensais donc ouvrir le fichier de conf depuis le shell script, me rendre à la ligne désirée et remplacer l'adrese IP existante par le contenu de $1.
 
La démarche est mauvaise? Ou peut-être c'est la façon dont j'interprete les choses qui l'est?


---------------
Tu sais que tu ne sais rien? Tu es sur la voie de la sagesse
n°557291
fguilleme
Posté le 15-09-2004 à 15:53:50  profilanswer
 

sed '/^ACCEPT/s/\([0-9.]\+\)/1.2.3.4/"

n°557297
kjb
Posté le 15-09-2004 à 16:01:16  profilanswer
 

Je suppose que cette instruction serait parfaite si le fichier de configuration en question ne contenait qu'une seule ligne comprenant le mot ACCEPT. Mais pour mon cas, est-ce possible de me repérer plutôt par rapport à la ligne de commentaire précédente et, par exemple de remplacer la ligne qui suit par une nouvelle ligne comprenant la nouvelle adresse?


---------------
Tu sais que tu ne sais rien? Tu es sur la voie de la sagesse
n°557301
kjb
Posté le 15-09-2004 à 16:02:52  profilanswer
 

petite précision, je ne souhaite modifier qu'une seule règle parmis beaucoup d'autres...


---------------
Tu sais que tu ne sais rien? Tu es sur la voie de la sagesse
n°557319
fguilleme
Posté le 15-09-2004 à 16:31:35  profilanswer
 

C'est pas bcp plus dur
sed '/le commentaire/,+1s/\([0-9.]\+\)/1.2.3.4/"
Mais la ça va te faire la modif sur chaque ligne qui suit immeciatement le commentaire. Si tu veux le faire qu'une fois c'est un peu plus compliqué.

n°557587
kjb
Posté le 16-09-2004 à 09:51:15  profilanswer
 

Non le traitement ne doit être effectué que sur une ligne seulement. je vais essayer ton code merci beaucoup


---------------
Tu sais que tu ne sais rien? Tu es sur la voie de la sagesse
mood
Publicité
Posté le 16-09-2004 à 09:51:15  profilanswer
 

n°558983
kjb
Posté le 19-09-2004 à 08:35:09  profilanswer
 

finalement je me suis basé sur le numéro de ligne et j'ai utilisé ton script ça fonctionne très bien.
Merci beaucoup!
 
sed -e 322"s/\([0-9.]\+\)/$1/"
(le traitement se fait sur la ligne 322)


---------------
Tu sais que tu ne sais rien? Tu es sur la voie de la sagesse

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script shell pour modifier un fichier texte

 

Sujets relatifs
pb: démarrage en mode texte suite à un changement de CM..[RESOLU]crontab script visuelle
Ajouter une page blanche à un fichier PDF [Résolu]Un chti aide pour la redirection d'info vers un fichier
gros pb execution scriptOS/Traitement texte bootable sur disquette
Perte de fichier ds Sendmail[gravure] graver un fichier de 4 Go
[Résolu] Diviser en fichier en 2 parties ...Quota, Script : attribuer des quotas différent pour chaque user
Plus de sujets relatifs à : Script shell pour modifier un fichier texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR