如何根据第一列的值比较两个文件?

如何根据第一列的值比较两个文件?

我想根据第一列的值比较两个文件:

文件1

aaa 23 3
bbb 56 6
ccc 45 2

文件2

bbb m a
aaa a m
ccc m m

输出文件应该是:

aaa  a m
bbb  m a
ccc  m m

即,我们需要按照第一个文件的第一列顺序打印第二个文件的第二列和第三列。

有人可以为此建议一个 awk 脚本吗?

答案1

尝试这个:

$ awk 'FNR==NR{a[$1]=$0;next};{print a[$1]}' file2 file1

答案2

对于大文件来说这会非常慢,但你可以这样做

$ while read a rest; do grep -w $a file2; done < file1
aaa a m
bbb m a
ccc m m

更快的方法,在 Perl 中:

$ cat file1 | perl -lane '$k{$F[0]}=$_;
                END{
                  open(A,"file1");
                  while(<A>){/^(.+?)\s/; print $k{$1}}
               }' file2
aaa a m
bbb m a
ccc m m

相关内容