Linuxで長さと列の異なる2つのファイルをマージする方法

Linuxで長さと列の異なる2つのファイルをマージする方法

列と長さの異なる2つのファイルがあり、それを以下に提供されている必須出力ファイルにマージしたいと思います。助けてください!

ファイル1

aa
bb
cc
dd

ファイル2

ff , 2 , tg12
dd , 3 , tg13
gg , 4 , tg14
hh , 5 , tg15
aa , 6 , tg16
bb , 7 , tg17
cc , 8 , tg18
ii , 9 , tg19

希望の出力

aa , 6 , tg16
bb , 7 , tg17
cc , 8 , tg18
dd , 3 , tg13

答え1

AWKソリューション(順番にsort注文する):

awk 'NR==FNR{ a[$1]; next }$1 in a' file1 FS='[[:space:]]*,[[:space:]]' file2 | sort
  • FS='[[:space:]]*,[[:space:]]'- フィールド区切り記号の設定file2

出力:

aa , 6 , tg16
bb , 7 , tg17
cc , 8 , tg18
dd , 3 , tg13

答え2

私が考えることができる最も簡単な解決策は次のとおりです。

grep -f file1 file2 | sort

関連情報