我需要比较两个文件f1.txt和f2.txt并获取公共元素?

时间:2016-05-02 06:36:21

标签: awk compare

我需要比较两个文件f1.txt和f2.txt并获取公共元素,对于这种情况,我希望匹配每行的第一个元素来打印附加公共元素的整行?

f1.txt

3
4
5

f2.txt

1AAAAAA
2BBBBBB
3CCCCCC
4DDSDDDD
5EEEEEE
6FFFFFFF
7GGGGG
5EHHH

预期结果:

3CCCCCC
4DCCCCC
5EEEEEEE

2 个答案:

答案 0 :(得分:0)

awk 'FNR==NR{
    a[$1];
    next
}
{
    split($1,b,"") ;
    if( b[1] in a && !c[b[1]] ) {
        print $1;
        c[b[1]]=1
    }
}' f1.txt f2.txt

答案 1 :(得分:0)

$ awk -v FS= 'NR==FNR{a[$1];next} $1 in a{print; delete a[$1]}' f1.txt f2.txt
3CCCCCC
4DDSDDDD
5EEEEEE

以上内容适用于GNU awk和任何其他awk,当FS为null时,它会将记录拆分为单个字符的字段。使用其他awks使用substr($ 0,1,1)。