【发布时间】:2013-09-22 13:06:15
【问题描述】:
我想浏览makefile中的一组文件:
alltest: all
for f in $(FILES); do \
echo $$f; \
done
我想写$(FILES) 这样它就涉及/abc/*.txt 的文件,它们的正文中不包含ERROR1 或ERROR2。
也寻找一组包含ERROR1或ERROR2的文件,我使用find -iname '/abc/*.txt' | xargs grep -e "ERROR1" -e "ERROR2"
谁能告诉我如何补集,以及如何将shell命令集成到makefile中?
【问题讨论】:
-
在
make中执行此操作之前,您将如何在shell 中执行此操作?你试过什么? -
我只是编辑了一点代码...在shell中,我只偶尔使用
grep...查找文件的命令对我来说太复杂了...跨度> -
shell 是一种编程语言——相当适合程序对文件的操作。你用哪种语言编程?想想你会用那种语言做什么。假设您可以生成文件名列表。您如何找到正文中包含 ERROR4 的文件(提示:
grep带有选项可以告诉您)?您将如何从列表中删除名称(提示:comm可以比较已排序的值列表)?如何在第 1 行找到包含ERROR1或ERROR2或ERROR3的文件?这可能是最艰巨的任务。如何从列表中删除这些文件。 -
你有 GNU
grep吗?您是否查看过它的选项列表(相当广泛:grep --help)?否定(不包含错误,尤其是在特定行上)相对难以处理。但是您至少可以考虑如何编写一个 shell 脚本,给定一个名称列表,返回一个符合您条件的名称列表。然后你可以把它放在你的$PATH的bin目录中,然后在你的makefile中使用它,不是吗? -
我只是修改了一点OP...