2012-06-13 6 views
0

J'essaie de remplacer une chaîne dans un fichier par son alias correspondant dans un autre fichier.Trouver une chaîne dans un fichier et remplacer sa correspondance dans un autre fichier

Par exemple, je veux faire correspondre le premier champ de chaque ligne d'un fichier et le remplacer par ce qu'il est égal au fichier B.

Je ne suis pas sûr de savoir comment répondre? Serait-ce awk avec une boucle for ou quelque chose?

Essayer de ce script dans Solaris ...

fichier A

KVHPOJNOTES KVHPOJNOTESSERVER C_POJ_NOTES_C1D63EN 
KVHPOJNOTES KVHPOJNOTESSERVER C_POJ_NOTES_C99HXEN 
KVHNOTESIDANAPC KVHPOJANAPC C_POJ_NOTES_START_ANAPC 
KVHNOTESIDANAPC KVHPOJANAPC C_POJ_NOTES_STOP_ANAPC 
KVHNOTESIDANAPD KVHPOJANAPD C_POJ_NOTES_START_ANAPD 

fichier B

KVHNOTESIDAHMLB=ahml02 
    KVHNOTESIDAHUBA=ahub01 
    KVHNOTESIDALMLD=alml02 
    KVHNOTESIDANAPC=anap02 
    KVHNOTESIDANAPD=anap04 
    KVHNOTESIDALMLF=alml06 

Je pensais que ce serait quelque chose sur la base de

for i in `cat "File A"` 
do 
grep $1 "File B" | awk ' { print $3 } ' 
done 

Toute aide serait appréciée.

Merci

+0

ce qui est que vous attendiez la sortie - la description est pas très clair, plus votre code a quelques problèmes, il est donc difficile de deviner ce que vous voulez. –

Répondre

1

En utilisant AWK:

awk '{ if(NR != FNR) { if(map[$1]) $1=map[$1];print } 
    else { split($0,a,"=");map[a[1]]=a[2];}}' FileB FileA 
Questions connexes