我有两个不同的文件,每个文件一栏。文件 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
。
它没有给出精确的您指定的格式。但是,如果您愿意,您可以解析它以给出输出。 (标准工具和标准格式通常都是经过深思熟虑的。)