比较两个文件并在第一个文件中打印匹配项并添加额外的列

比较两个文件并在第一个文件中打印匹配项并添加额外的列

我有两个不同的文件,每个文件一栏。文件 1 有更多信息,我想要一个命令来搜索文件 2 的匹配项,然后返回原始文件 1,并带有一个额外的列,例如“匹配”

文件1

Mg_134
Mg_560

文件2

Mg_1
Mg_134

输出

Mg_134 match
Mg_560

我尝试使用 join 和 grep -Ff,但我想得到这个特定的输出。谢谢

答案1

这应该是一个相当标准的任务awk

awk 'NR==FNR {a[$1]++; next} $1 in a {$2="match"}1' File2 File1
Mg_134 match
Mg_560

答案2

如果文件已排序,标准工具是comm

comm -2 file1 file2

-2选项是抑制 所特有的打印行file2

它没有给出精确的您指定的格式。但是,如果您愿意,您可以解析它以给出输出。 (标准工具和标准格式通常都是经过深思熟虑的。)

相关内容