linux 如何合并两个不同长度和列的文件

linux 如何合并两个不同长度和列的文件

我有 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

相关内容