有一秒钟,我希望能够使用sed
的{{1}}命令,但是a\
(在我手中,无论如何)并不是保持状态的粉丝(在每个#include之后插入。
有没有办法用sed
执行此操作?是否有 smart 这样做的方式?
如果可以采用这种方法,我会编写一个常规的Python / Ruby脚本,但这似乎是某个人可能碰到某个地方的问题。
答案 0 :(得分:3)
在应用sed之前,您可以使用命令tac逐行反转文件,然后让sed执行 insert 而不是追加。当然要确保sed只插入一次。像这样:
tac file | sed '1,/#include/ {/#include/i\
#include whatever
}' | tac
这应该可以解决问题。
答案 1 :(得分:1)
假设您在主程序启动之前没有任何多行注释:
awk '!f && /^ *[a-zA-Z]/{print "#include<newfile.h>";f=1;}1' file
答案 2 :(得分:1)
这可能适合你(GNU sed):
sed -i ':a;$!{N;ba};s/.*#include[^\n]*/&\n#include <new.h>/' file1 file2 fileN