0

あるファイルの文字列を別のファイルの一致するエイリアスに置き換えようとしています。

たとえば、ファイル A の各行の最初のフィールドを一致させ、それをファイル B と同じものに置き換えたいとします。

私はそれに取り組む方法がわかりませんか?for ループか何かで問題が発生しますか?

これを Solaris でスクリプト化しようとしています...

ファイル 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

ファイル B

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

私はそれが線に沿ったものになると思っていました

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

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

1

AWK の使用:

awk '{ if(NR != FNR) { if(map[$1]) $1=map[$1];print } 
     else { split($0,a,"=");map[a[1]]=a[2];}}' FileB FileA
于 2012-06-14T12:23:29.473 に答える