petit script de substitution

petit script de substitution - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 05-11-2012 à 08:52:24    

Bonjour,
Je précise par avance que je suis un pur newbie.
Voilà, j'ai dans un fichier une "matrice" de correspondance du genre :
nom_ioport=50050768011047f3
...
Et dans un autre fichier, j'ai le résultat d'une commande unix qui me donne la liste des chemins d'accès disque  avec le wwn (second champ de la matrice plus haut) de l'ioport
associé.
Comment faire pour substituer le second champ de ma matrice par le premier dans le fichier résultat ?
Y'a-t-il un moyen simple d'y arriver ? petit script bash par exemple.
Merci d'avance.

Reply

Marsh Posté le 05-11-2012 à 08:52:24   

Reply

Marsh Posté le 05-11-2012 à 16:02:36    

salut,
 
tout cela reste très vague, je ne vais donc pas être plus précis :
 
oui, c'est possible; j'utiliserai `sed' pour le faire.

Reply

Marsh Posté le 05-11-2012 à 21:01:21    

Salut,
Merci pour ta réponse mais je ne sais pas comment expliquer clairement.
J'essaie :
J'ai un fichier 1 où j'ai :
nom_a_donner1=50012532626
nom_a_donner2=20326223262
et ainsi de suite, une sorte de table de correspondance.
Et dans un fichier 2 j'ai :
machineA
hdisk1, fscsi1, enabled, wwn
hdisk2 ....
hdisk1 ....
et ce pour de nombreuses machines avec plusieurs disques.
Le champ à substituer se trouve dans le fichier 2 : wwn, il correspond au second champ dans le fichier 1.
Il faut donc que je puisse remplacer le 4ème champ du fichier 2 par le champ 1 du fichier 1.
sed permet les substitutions dans un seul fichier, non?
Suis-je plus clair ?

Reply

Marsh Posté le 05-11-2012 à 22:00:01    

Citation :

sed permet les substitutions dans un seul fichier, non?

oui, mais le shell pourrait en lire, et sed effectuer la modification.
 
peu importe.
 
awk sera probablement plus simple

Code :
  1. $ cat ioports
  2. nom_a_donner1=50012532626
  3. nom_a_donner2=20326223262
  4. $ cat wwn
  5. hdisk1, fscsi1, enabled, wwn
  6. hdisk2, fscsi2, enabled, wwn
  7. $ awk '{getline var <"ioports"; sub("[^=]*=","",var); print $1,$2,$3,var}' wwn
  8. hdisk1, fscsi1, enabled, 50012532626
  9. hdisk2, fscsi2, enabled, 20326223262

Reply

Sujets relatifs:

Leave a Replay

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