返回两个文件中的公共字段

时间:2010-09-29 14:35:06

标签: awk unix

我有两个文件,应该将file1的第一列与file2的第一列进行比较,结果文件应该是file2

例如:

  • 文件1

    苹果
    香蕉
    芒果
    土豆
    番茄

  • 文件2

    苹果:水果
    茄子:蔬菜 女士的手指:蔬菜
    橙色:水果
    番茄:蔬菜
    马铃薯:蔬菜

结果文件应如下所示:

苹果:水果
番茄:蔬菜
马铃薯:蔬菜

任何关于此的想法都将受到赞赏

由于

3 个答案:

答案 0 :(得分:3)

无需排序(减少流程创建)

$ awk -F":" 'FNR==NR{f[$0];next}($1 in f)' file file2
apple:fruit
tomato: vegetable
potato: vegetable

答案 1 :(得分:1)

在Bash中,ksh,zsh:

join -t: <(sort file1) <(sort file2)

在其他shell中,您需要预先输出文件。

答案 2 :(得分:0)

grep "$(cat file1.txt)" file2.txt