0

有那么一秒钟,我希望能够摆脱sed' 的a\命令,但是sed(无论如何,在我手中)并不是保持状态的粉丝(在每个 #include 之后插入)。

那么有没有办法做到这一点sed呢?有这样做的聪明方法吗?

如果这是要走的路,我会求助于编写一个常规的 Python/Ruby 脚本,但这似乎是某人可能在某个时候遇到的问题。

4

3 回答 3

3

在应用 sed 之前,您可以使用命令 tac 逐行反转文件,然后让 sed 执行插入而不是追加。当然要确保 sed 只插入一次。像这样:

tac file | sed '1,/#include/ {/#include/i\
#include whatever
}' | tac

这应该够了吧。

于 2012-10-25T07:55:07.473 回答
1

假设您在主程序启动之前没有任何多行注释:

 awk '!f && /^ *[a-zA-Z]/{print "#include<newfile.h>";f=1;}1' file
于 2012-10-25T07:44:41.067 回答
1

这可能对您有用(GNU sed):

sed -i ':a;$!{N;ba};s/.*#include[^\n]*/&\n#include <new.h>/' file1 file2 fileN
于 2012-10-25T07:51:13.700 回答