web-dev-qa-db-ja.com

一意のIDに基づいてすべてのレコードの最後に値を挿入します

2つのファイルがあります。1つは区切り文字で、もう1つは位置ファイルです。

これらの2つのファイルは、以下に示すように同じ一意の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を除いて、名前とともに一意のIDがあります。

以下に示すように、両方のファイルで一意のメンバーIDが一致する場合にのみ、pos.txtに代替IDを挿入したい

pos.txt

11111  abc newyork US 01

22222  xyz  dallas US 09

シェルスクリプトを使用してこれをどのように達成できますか?

1
UNIXbest

この問題では、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
3
cuonglm