一意のIDに基づいて各レコードの末尾に値を挿入します。

一意のIDに基づいて各レコードの末尾に値を挿入します。

2つのファイルがあり、1つは区切り文字を持ち、もう1つは場所ファイルです。

両方のファイルは以下のように同じ一意のIDを共有しますが、両方のファイルには異なる情報が含まれています。

del.txt

11111|abc|01|||||||||

22222|xyz|09|||||||||

pos.txt

11111  abc newyork US 

22222  xyz dallas  US

del.txtファイルは、一意のメンバーID、その後に区切られた名前、および代替IDで構成されます。 (区切り付き)および類似のpos.txt(位置形式の代替IDを除く)。

以下のように、2つのファイルの一意のメンバーIDが一致する場合にのみ、pos.txtに代替IDを挿入したいと思います。

pos.txt

11111  abc newyork US 01

22222  xyz  dallas US 09

シェルスクリプトを使用してこれを達成するにはどうすればよいですか?

答え1

この問題に対する最善のアプローチは、次を使用することですawk

$ awk -F'[ |]' 'FNR==NR{a[$1]=$3;next}($1 in a){print $0" "a[$1]}' del.txt pos.txt 
11111  abc newyork US 01

22222  xyz dallas  US 09

関連情報