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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [RESOLU] Commande SED : suppresion d'une variable dans un fichier KO

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Commande SED : suppresion d'une variable dans un fichier KO

n°1082954
cosca44
Posté le 20-10-2008 à 12:38:40  profilanswer
 

Bonjour,  
 
Je développe actuellement un script pour optimiser le temps de traitement des demandes DNS-DHCP que l'onpeut m'effectuer.  
 
Mon problème se situe au nibveau de la commande SED. En fait, j'ai un fichier contenant une liste d'adresse IP et je souhaite supprimer dans ce fichier une adresse IP bien précise que je récupère dans une variable.  
 
Voic mon code, mon problème se situe au niveau de la ligne utilisant SED :  
 

Code :
  1. while read range addr1 addr2
  2. do
  3.     if [ "$addr2" == "" ]
  4.     then
  5.            addr=$(echo $addr1 | awk '{gsub(/;/," ",$dhcp_fin);print}')  //je récupère l'adresse IP en supprimant le ";" qui se trouve juste après.
  6.            sed "/$addr/d" $rep/testfichierbis > $rep/testfichier   //je souhaite suprrimer l'adresse IP en question du fichier contenant la liste d'IP.     fi
  7. done < $rep/monfichier


Le problème est que la suppression de l'IP ne fonctionne pas. Pourtant quand je fais un echo de ma variable "addr", il m'affiche bien l'IP (192.168.138.200 par exemple).  
J'ai tester en mettant l'adresse IP en dur dans le code et çà fonctionne mais pas avec la variable.  
 
Je pense que çà doit venir du dollar devant la variable qu'il doit interpréter comme un caractère spécial ?  
 
Avez vous une idée ?  
 
Par avance merci,  
 
Cosca


Message édité par cosca44 le 20-10-2008 à 15:50:48
mood
Publicité
Posté le 20-10-2008 à 12:38:40  profilanswer
 

n°1082959
matafan
Posté le 20-10-2008 à 12:57:31  profilanswer
 

Je ne vois pas comment ton truc peut marcher avec un $dhcp_fin entre simple quotes.
 
Quoi qu'il en soit ce n'est clairement pas la bonne façon de faire. Pourquoi tu ne fait pas simplement un grep -vF "${$addr%;}" $rep/testfichierbis > $rep/testfichier ? En plus c'est plus sûr, parce que là pour sed les points de ton address IP peuvent représenter n'importe quel caractère.

n°1082994
cosca44
Posté le 20-10-2008 à 14:36:31  profilanswer
 

La ligne avec $dhcp_fin fonctionne très bien, je n'ai pas eu de problème pendant tous les tests que j'ai effectué.  
 
Je viens de me lancer dans le script depuis deux semaines, donc c'est la seule façon que j'ai trouvé pour le moment.  
 
La ligne que tu me donnes permet de faire de la suppression ? En fait, je ne la comprend pas trop ? que signifie aussi le "%;" ?  
 
Par avance merci.

n°1083006
matafan
Posté le 20-10-2008 à 15:03:28  profilanswer
 

Y'a un $ dans mon truc, il faut lire ${addr%;}. C'est comme $addr, sauf que le ";" final est supprimé. ${var%pattern} supprime tout ce qui match "pattern" à la fin de "var".
 
Oui, ma ligne remplace tes deux lignes.
 
Edit : en fait avec le coup du $dhcp_fin ça marche parce que tu n'as pas de variable qui s'appelle dhcp_fin dans ton awk, donc pour lui c'est comme $0. Mais il faudrait soit mettre $0, soit rien du tout : gsub(/;/, " " )


Message édité par matafan le 20-10-2008 à 15:06:22
n°1083014
cosca44
Posté le 20-10-2008 à 15:11:09  profilanswer
 

Un très grand merci à toi pour ton aide.  
Et en plus le code est moins chargé.

n°1087948
sputnick
bip...bip...bip...bip...bi...b
Posté le 06-11-2008 à 20:52:04  profilanswer
 

C'est en Anglais, mais je vous recommande chaudement cette lecture pour les "parameter expansion" http://wooledge.org:8000/BashFAQ/073
( c'est cette feature qui est utilisée )


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

  [RESOLU] Commande SED : suppresion d'une variable dans un fichier KO

 

Sujets relatifs
pam_tally [résolu]Solaris 10/Sunfire T1000 Configuration bge2 et bge3 KO
Problème de boot avec 2.6.27 ! [Résolu][RESOLU] Variable et boucle for ..
[RESOLU]debian: grub, erreur de boot suite màjCommande ps et recup des heures
[Résolu][Squid] N'autoriser que le port 21Erreur en compilant gcc [Résolu]
[Résolu]Changer sur les jpg la mauvaise heure d'un appareil photo 
Plus de sujets relatifs à : [RESOLU] Commande SED : suppresion d'une variable dans un fichier KO


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