AWKで重複値を探す

AWKで重複値を探す

重複したエントリを持つ2つの異なるファイルでvlookupが必要です。

ファイル1

abc     10
xyz     20
bhy     30
hgf     40

ファイル2

a   abc     
b   xyz     
c   bhy     
d   abc     
e   abc     
f   xyz     

希望の出力:

abc     10  a,d,e
xyz     20  b,f
bhy     30  c
hgf     40  Not_Available

ベストアンサー1

Awk解決策:

awk 'NR == FNR { a[$1] = $2 OFS; next }
     $2 in a { a[$2] = a[$2] (a[$2] ~ /\t$/? "" : ",") $1 }
     END { for (i in a) print i, a[i] }' OFS='\t' file1 file2

出力:

bhy 30  c
abc 10  a,d,e
xyz 20  b,f

最後の条件については、次の修正を使用してください。

awk 'NR == FNR { a[$1] = $2 OFS; next }
     $2 in a { a[$2] = a[$2] (a[$2] ~ /\t$/? "" : ",") $1 }
     END {
         for (i in a) print i, a[i] (a[i] ~ /\t$/? "Not_Available" : "")
     }' OFS='\t' file1 file2

おすすめ記事