按键列比较unix中的2个文件

时间:2014-09-12 13:01:52

标签: shell unix

我们正在寻找关键列"名称"

文件1是

id|name|age|sal

1|AAA|30|2000

2|BBB|40|3000

4|CVC|32|2000

5|DDD|25|2000

文件2是

name

FFF

GGG

AAA

DDD

RRR

输出为

文件3(Maching)

id|name|age|sal

1|AAA|30|2000

5|DDD|25|2000

文件4(不加工)

id|name|age|sal

2|BBB|40|3000

4|CVC|32|2000

请使用Unix给我输出

感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

您可以使用awk过滤器

    $ awk 'FNR==NR{a[$1];next}($1 in a){++a[$1]}
        END{for(i in a){print i" "a[i]}}' file1.txt 1.txt 2.txt
    put 1
    get 1
    move 2

其中:

  • FNR==NR{a[$1];next}:处理file1.txt时,我们标记为 在关联数组$1中出现a
  • ($1 in a){++a[$1]}:处理1.txt2.txt时,我们会检查 如果$1存在于关联数组a中,如果是,则增加 按1计算。
  • 最后,循环关联数组a,打印密钥(首先 文件中的字段)及其值(1.txt和中的出现次数 2.txt)。

参考: https://unix.stackexchange.com/questions/125762/compare-first-column-in-different-files