我可以使用什么unix命令/实用程序根据下面的2个列表创建我的最终名单?这就像做SET
操作一样。但是,主要的比较必须是NameList1
。如果NameList2
有额外的名称,请不要将其包含在主列表中。
注意:我不能对它进行排序(按字母顺序等)。我需要保留列位置(自然顺序),因为我已经在列表顶部,向下提供了。谢谢你的帮助。
NameList1:
Joe
John
Mary
Mike
Allan
David
Andrew
Matt
NameList2:
Joe
John
Mary
George
Jeff
Allan
David
Andrew
Frank
如果我通过并排比较进行diff
,您可以看到比较结果。像这样:
-bash-4.1$ diff --side-by-side NameList1.txt NameList2.txt
Joe Joe
John John
Mary Mary
Mike | George
> Jeff
Allan Allan
David David
Andrew Andrew
Matt | Frank
我最终名单的结果将是:
Joe
John
Mary
Mike
Allan
David
Andrew
Matt
从NameList1中删除George, Jeff, Frank
的位置。我如何制作最终清单?有更好的工具命令吗?我正确使用diff
吗?
答案 0 :(得分:1)
这可以使用简单的join
命令来实现。
在我的Mac中,以下给出了预期的结果
join -a1 NameList1 NameList2
> -a file_number
> In addition to the default output, produce a line for each
> unpairable line in file file_number.
修改强>
在Linux上,--no-checkorder
选项会避免检查输入的排序顺序。
join -a1 --nocheck-order NameList1 NameList2