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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  script avec commande SED

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script avec commande SED

n°1028044
lamouesh
Posté le 31-03-2008 à 17:34:27  profilanswer
 

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

mood
Publicité
Posté le 31-03-2008 à 17:34:27  profilanswer
 

n°1028057
o'gure
Modérateur
Multi grognon de B_L
Posté le 31-03-2008 à 18:16:36  profilanswer
 

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 !
n°1028065
o'gure
Modérateur
Multi grognon de B_L
Posté le 31-03-2008 à 19:01:04  profilanswer
 

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 !
n°1028240
lamouesh
Posté le 01-04-2008 à 09:57:02  profilanswer
 

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...

n°1028245
o'gure
Modérateur
Multi grognon de B_L
Posté le 01-04-2008 à 10:06:06  profilanswer
 

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 !
n°1028295
lamouesh
Posté le 01-04-2008 à 11:21:07  profilanswer
 

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

n°1028298
o'gure
Modérateur
Multi grognon de B_L
Posté le 01-04-2008 à 11:23:44  profilanswer
 

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 !
n°1028328
lamouesh
Posté le 01-04-2008 à 11:49:15  profilanswer
 

'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...


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

  script avec commande SED

 

Sujets relatifs
commande pour trouver mots qui commence par une certaine lettrescript pour effacer des dossiers de plus de X jours
[RESOLU] Résultat commande système dans un script puis envoi par mail[résolu] détournement de la commande #!/bin/csh -f
[bash] Bugs dans mon script, need help !commande date
[bash] Commande pour supprimer des mots (resolu)screen dans un script (tunnel ssh)
Plus de sujets relatifs à : script avec commande SED


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