检测并从开始的文件
问题描述:
Discount的删除评论configure.sh
脚本在config.h
文件的开始产生一些动态评论:检测并从开始的文件
/*
* configuration for markdown, generated Fri 28 Jan 2011 16:13:46 EST
* by [email protected]
*/
#ifndef __AC_MARKDOWN_D
#define __AC_MARKDOWN_D 1
[...]
其中嵌入一个Git项目里面打折的时候为一些无用的补丁制作,所以我在提交之前删除它们。我想自动化configure.sh
的输出,所以我可以更快地升级项目内的折扣,但我对awk/sed不太熟悉。我有这行我的脚本:
tail -n +5 config.h > ../discount-config/config.h
但我想更多的东西面向未来,以取代这一点,所以它不会破坏原文件,如果更高版本的折扣有更多/小于4条评论。
答
如何使用sed?
例如,如果你可以假设顶部评论将总是从文件的第一行:
$ cat test.h
/*
* configuration for markdown, generated Fri 28 Jan 2011 16:13:46 EST
* by [email protected]
*/
#ifndef __AC_MARKDOWN_D
#define __AC_MARKDOWN_D 1
/*
* Test
*/
int x;
$ sed '1,/^ *\*\/ *$/ { d; }' test.h
#ifndef __AC_MARKDOWN_D
#define __AC_MARKDOWN_D 1
/*
* Test
*/
int x;
你就不能修改`configure.sh`不写评论? – SilentGhost 2011-01-30 23:23:52
为什么你想要在存储库中存储生成的文件?在检出项目之后,存储可以运行的脚本以生成文件通常会更好。 – ssmir 2011-01-31 00:36:47