script avec commande SED

script avec commande SED - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 31-03-2008 à 17:34:27    

slt à tous
 
j'ai un problème avec sed. J'ai un enorme fichier texte dans lequel j'aimerai changer la chaine de caractère contenue dans les guillemets. Seules les lignes qui commencent par "EVENT" et qui finissent par "Normal" sont concernées par cette modification.
ex : EVENT textetextetextexte "string1" Normal
 
 
si je tape ça :

Code :
  1. grep ^EVENT fichier | grep Normal | sed s/\".*\"/\"string2\"/


 
ça marche il ne reste plus qu'à écrire dans le fichier. J'ai essayé de le caler dans un script mais ça passe pas. ($1 est le fichier à analyser)

Code :
  1. cat $1 | while read ligne
  2. do
  3. if " $ligne = `grep ^EVENT` " && " $ligne = 'grep Normal' "
  4. then
  5. sed s/\".*\"/\"string2\"/
  6. fi
  7. done


 
Je ne trouve pas mon erreur. Pouvez-vous m'aider ?
je reste ouvert à toute autre manière de procéder  ;)

Reply

Marsh Posté le 31-03-2008 à 17:34:27   

Reply

Marsh Posté le 31-03-2008 à 18:16:36    

déjà ton grep tu peux le simplifier en faisant

grep ^EVENT.*Normal$


Ensuite ton sed, tu peux utiliser le 'g' à la fin pour éviter de faire une boucle

sed s/\".*\"/\"string2\"/g

 

sinon regarde du coté de awk mais je pense qu'en sed ca doit etre faisable sans pipe, juste en une ligne de sed


Message édité par o'gure le 31-03-2008 à 18:17:01

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 31-03-2008 à 19:01:04    

sed -i 's/\(^EVENT.*"\).*\(".*Normal$\)/\1STRING2\2/g' fichierinput.txt

 

pour la compréhension http://www.grymoire.com/Unix/Sed.html#uh-4


Message édité par o'gure le 01-04-2008 à 09:06:42

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 01-04-2008 à 09:57:02    

slt, merci pour vos réponses. :)
 
malheureusement O'gure ta commande ne marche pas.  
J'ai oublié de vous préciser que je suis sur HP-UX, et visiblement sed est différent...

Reply

Marsh Posté le 01-04-2008 à 10:06:06    

Arf... fallait le préciser :/
Essaye de retrouver dans le manpage sur HP-UX les différentes parties. Mes sont normalement expliquées dans  le manpage pour linux[:spamafote]


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 01-04-2008 à 11:21:07    

bon en fait je l'ai transféré sur un linux pour faire le traitement et ça passe ^_^
 
merci O'gure

Reply

Marsh Posté le 01-04-2008 à 11:23:44    

J'espères que tu as pris le temps de regarder le lien et que tu as compris comment fonctionne ma ligne. Je préfère expliquer que donner des réponses toutes faites à appliquer "bêtement".


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 01-04-2008 à 11:49:15    

'course I did !!
 
j'ai même mis ton lien en favoris ^_^
 
c'est juste que j'y connais pas gd chose en unix/linux, j'sais pas bien chercher mes infos encore...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed