bash:比较2个文件,然后输出具有相同模式的第三个文件

时间:2013-05-17 18:40:39

标签: bash compare

所以这是我的问题:我有2个文件:

档案a:

Username    ID  ChanelName
somename    1   Ime1
somename    6   Ime2
somename    16  Ime3
somename    12  Ime4
somename    19  Ime5

文件b:

ID  subID   SubAccountName
1   12001   SubName1
1   12003   SubName2
2   17507   SubName3
3   11997   SubName4
4   345 SubName5
5   6457    SubName6
6   8567    SubName7
6   6456    SubName8
6   3453    SubName9
6   7453    SubName10
10  745 SubName11
11  63453   SubName12
12  5674    SubName13
13  74756   SubName14
14  2324    SubName15
15  6576    SubName16
16  7897    SubName17
16  980 SubName18
18  6786    SubName19
19  79089   SubName20
20  75674   SubName21

我想比较这些文件并输出以下结果:

1   12001   SubName1
1   12003   SubName2
6   8567    SubName7
6   6456    SubName8
6   3453    SubName9
6   7453    SubName10
16  7897    SubName17
12  5674    SubName13
19  79089   SubName20
20  75674   SubName21

2 个答案:

答案 0 :(得分:0)

tail -n+2 file1 | awk '{print $2}' | xargs -I{} grep '^{} ' file2

答案 1 :(得分:0)

awk one liner

awk '{if(NR>1)system("grep -w ^"$2" <file2>");}' <file1>

还有许多其他解决方案,检查joinawk本身而不使用grep,只需将第一个文件内容存储在数组中,就可以完成,