有那么一秒钟,我希望能够摆脱sed
' 的a\
命令,但是sed
(无论如何,在我手中)并不是保持状态的粉丝(在每个 #include 之后插入)。
那么有没有办法做到这一点sed
呢?有这样做的聪明方法吗?
如果这是要走的路,我会求助于编写一个常规的 Python/Ruby 脚本,但这似乎是某人可能在某个时候遇到的问题。
在应用 sed 之前,您可以使用命令 tac 逐行反转文件,然后让 sed 执行插入而不是追加。当然要确保 sed 只插入一次。像这样:
tac file | sed '1,/#include/ {/#include/i\
#include whatever
}' | tac
这应该够了吧。
假设您在主程序启动之前没有任何多行注释:
awk '!f && /^ *[a-zA-Z]/{print "#include<newfile.h>";f=1;}1' file
这可能对您有用(GNU sed):
sed -i ':a;$!{N;ba};s/.*#include[^\n]*/&\n#include <new.h>/' file1 file2 fileN