2010-07-10 62 views
3

我想确定哪个头声明了特定的功能。我使用grep来查找函数使用的实例;现在,我想找到哪个头文件包含在所有文件中。我知道comm utility;但是,它只能比较两个排序的文件。是否有一个Unix实用程序可以找到任意数量的未排序的文件之间的共同线,还是必须写我自己的?找到几个文件共同的线

回答

0
cat *.c | sort | uniq -c | grep -e '^ *COUNT #include' 

其中COUNT是传递给cat文件的数量。在玩耍中,我使用这个变体,看看有什么文件,我#包括至少10倍:

cat *.c | sort | uniq -c | grep -e '^ *[0-9][0-9]\+ #include' 
+0

这将不包括其间接包含的头(文件foo.c包括foo.h中,其中包括bar.h ,而baz.c包含baz.h,其中包含bar.h)。 – Borealid 2010-07-10 04:45:48

+0

是的,但建议的通讯也不会。我把它作为依赖严格平等的许可,并忽略包括其他标题的标题。如果没有一些帮助,不匹配的空白或评论将会挫败'uniq -c'。 – drawnonward 2010-07-10 04:49:29