ファイルaとファイルルックアップがあり、構造は次のとおりです。
vi a.txt
empid|ename|sal_grade|MANAGER_ID
1|raj|A|202
2|MAN|B|203
3|JOS|C|204
vi lookup.txt
Grade|sal|manager_id
A|$100000|202
A|$1000|099
B|$1000000|203
B|$100|011
Output:
1|raj|A|202
2|MAN|B|203
command:
awk 'BEGIN {FS=OFS="|"} NR==FNR{a[$1];next} $3 in a{print $0}' lookup.txt a.txt >matched.txt
どちらのファイルでも、ランクと Manager_id は共通です。 a.txt を Rank と Manager_id を使用して Lookup.txt と結合し、a.txt からデータをインポートし、Lookup.txt から一致するものをインポートしようとしています。次のコマンドを試しましたが、ランク列のみを結合しましたが、ランク列と管理者ID列を結合する必要があります。
よろしくお願いします。
答え1
複合キーが必要な場合は、複合キーを構築してください。
awk '
BEGIN { FS=OFS="|" }
NR==FNR { a[$1 "-" $3]; next }
($3 "-" $4) in a { print $0 }
' lookup.txt a.txt > matched.txt
"-"
区切り文字として使用したり、他の文字列として使用したり、何も使用できません。例のデータを使用すると、区切り文字なしで機能します。