排列一个文件的行与第二行中的行相同

时间:2013-02-06 05:51:25

标签: linux perl bash sed awk

我有两个文件,我想在第一个文件中以相同的行顺序排列第二个文件的行。其中第2个文件的第2列和第5个文件与第1个文件的值相同,只是它们的顺序不同。考虑到完整的行不仅要重新排列第2列和第3列。请建议。

$ cat file1
FEX
MRU
MOV
FTL
MOY
$ cat file2
1/24/2013,MOV,144523,1/25/2013,MOV,1445231
1/24/2013,MOY,298792,1/25/2013,MOY,2987921
1/24/2013,FEX,628037,1/25/2013,FEX,6280371
1/24/2013,MRU,146084,1/25/2013,MRU,1460841
1/24/2013,FTL,454709,1/25/2013,FTL,4547091

必需的输出:

1/24/2013,FEX,628037,1/25/2013,FEX,6280371
1/24/2013,MRU,146084,1/25/2013,MRU,1460841
1/24/2013,MOV,144523,1/25/2013,MOV,1445231
1/24/2013,FTL,454709,1/25/2013,FTL,4547091
1/24/2013,MOY,298792,1/25/2013,MOY,2987921

1 个答案:

答案 0 :(得分:2)

假设字段2和5始终相同,这是使用awk的一种方式:

awk -F, 'FNR==NR { a[$2]=$0; next } { print a[$0] }' file2 file1

结果:

1/24/2013,FEX,628037,1/25/2013,FEX,6280371
1/24/2013,MRU,146084,1/25/2013,MRU,1460841
1/24/2013,MOV,144523,1/25/2013,MOV,1445231
1/24/2013,FTL,454709,1/25/2013,FTL,4547091
1/24/2013,MOY,298792,1/25/2013,MOY,2987921