awk - 返回两个文件中的公共(public)字段

标签 awk unix

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

例如:

  • 文件1

    苹果
    香蕉
    芒果
    马铃薯
    番茄

  • 文件 2

    苹果:水果
    茄子:蔬菜
    羊角 bean :蔬菜
    橙子:水果
    番茄:蔬菜
    马铃薯:蔬菜

结果文件应如下所示:

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

对此的任何想法将不胜感激

谢谢

最佳答案

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

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

关于awk - 返回两个文件中的公共(public)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3822646/

相关文章:

Unix:cut 或 awk 命令中的多字符和单字符分隔符

linux - 如果第一行包含一些文本,如何删除一行中的三行? (AWK)

awk - 使用 awk 删除并汇总 csv 文件元素

bash - bash 中有没有办法用变量的内容替换文本文件中的占位符?

macos - 如何按搜索顺序grep多个词条并输出?

c - 无法通过 unix tcp 套接字发送二进制数据

linux - BASH 在变量中使用 grep 和 awk

perl - 查找列中的唯一值并将唯一值替换为数字

linux - 如何在 Linux 中删除文件中的特定重复字符串

用于从某些子目录中删除特定文件的 Bash 脚本