remplacer des mots d'un fichier F1 par ceux d'un fichier F2

remplacer des mots d'un fichier F1 par ceux d'un fichier F2 - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 11-02-2009 à 18:10:41    

Bonjour à toutes et à tous ! :hello:  
 
J'ai un fichier F1 :
toto est fort et titi aussi
titi est grande

 
J'ai un fichier F2 :
toto Michel
titi Anne

 
J'ai envi d'avoir :
Michel est fort et Anne aussi
Anne est grande

 
Je me dit qu'il faut regrouper sed et awk... Mais je ne vois pas...  
Pouvez-vous m'aider ? J'ai du mal...
 
Merci.

Reply

Marsh Posté le 11-02-2009 à 18:10:41   

Reply

Marsh Posté le 12-02-2009 à 10:01:03    

Tu fais un script awk qui parse le fichier F1. Dans le bloc BEGIN, tu parse le fichier F2 grace à la fonction getline(), et tu génère un tableau de correspondances toto => Michel, titi => Anne. Ensuite pour chaque ligne de F1, tu fais une substitution pour chaque entrée du tableau.

Reply

Marsh Posté le 12-02-2009 à 11:54:16    

Merci, voilà ce que j'ai :
$ cat 1 |  
awk 'BEGIN {while("cat 2" | getline) tab[$1]=$2;}
{for (n in tab) print tab[n]}'
 
Par contre la dernière étape je ne vois pas trop... Serait-ce "sed "s/tab[$1]/tab[$2]/g" qu'il faut faire ? Si oui il ne prendra que la dernière substitution... C'est là que je bloque.
Merci en tout cas..

Reply

Marsh Posté le 12-02-2009 à 12:39:45    

Mais non, tu fais la substitution directement dans awk avec un gsub().

Reply

Marsh Posté le 12-02-2009 à 15:21:11    

Merci !
Ca marche parfaitement !

Reply

Sujets relatifs:

Leave a Replay

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