Linuxのファイル比較

Linuxのファイル比較

次の要件を満たすのに役立ちますか?

次の内容を含むFILE1とFILE2という2つのファイルがあります(例)。

ファイル1:

Column1       Column2
------------------------
M             1.2
A             11
S             hostname
T             TCP
E             120
R             Y

ファイル2:

Column1        Column2
---------------------------
A             12
M             1.3
T             SSL
S             hostname1

FILE1とFILE2のフィールドの順序が異なります。 FILE1とFILE2を比較し、FILE1の最初の列を取得し、FILE2の全列1を検索したいと思います。一致するものが見つかった場合(FILE2で)、列2の値を選択する必要があります。 FILE1 値の対応するフィールドを置き換えます。

誰もが私の要件を助けることができれば幸いです。

答え1

次のことができます。

$ join -o 0,1.2,2.2 -a 1 <(sort -k 1,1 FILE1) <(sort -k 1,1 FILE2) |
     awk '{print $1, $NF}'
A 12
E 120
M 1.3
R Y
S hostname1
T SSL

または、次の行の順序を維持してくださいFILE1

$ awk '!n {a[$1] = $2; next}
   {print $1, $1 in a ? a[$1] : $2}' FILE2 n=1 FILE1
M 1.3
A 12
S hostname1
T SSL
E 120
R Y

関連情報