Comm命令 - 不必要的限制?

时间:2016-04-07 00:05:46

标签: linux command-line

这是关于linux命令行上的comm命令的问题。

为什么它仅适用于已排序的文件?为什么不能为我们排序文件,然后做它的事情?为了说明:如果我们有file1file2,并且我们希望使用comm对它们进行比较,我们发现如果两个文件中的任何一个未排序,我们就会获得意外的结果。为什么创建者添加了强制参数为SORTED文件的限制?

这看起来很不方便,我想创建一个shell脚本来替换这个默认的comm

我的问题是:为什么我不应该更换它?使用comm来限制这个限制是一件好事,就像我们可以在c ++程序中添加const一样,这是不必要的,但被认为是一种好的做法?

感谢。

1 个答案:

答案 0 :(得分:3)

此设计使comm程序简单,只需比较文件即可。如果它还必须对文件进行排序,那么sort命令的复杂性将大大增加,包括如果内容不适合内存则需要临时文件。如果文件已经排序,这将是不必要的。基本的Unix哲学是每个命令应该做一件事,或者根据选项做一些事情的变化,你应该将它们结合起来以满足更复杂的需求。

您可以在比较文件之前使用进程替换对文件进行排序。

comm <(sort file1) <(sort file2)