sed
しばらくの間、私は'sa\
コマンドで逃げることを望んでいましたが、 sed
(とにかく、私の手の中では) 状態を維持するのが本当に好きではありません (すべての #include の後に挿入します)。
それで、これを行う方法はありsed
ますか?これを行うスマートな方法はありますか?
それがうまくいくなら、私は通常の Python/Ruby スクリプトを書くことに頼りますが、これはおそらく誰かがいつかどこかでぶつかった問題のようです。
sed を適用する前に、コマンド tac を使用してファイルを 1 行ずつリバースし、sedに追加ではなく挿入を実行させることができます。そしてもちろん、sed がこの挿入を 1 回だけ行うようにしてください。このような:
tac file | sed '1,/#include/ {/#include/i\
#include whatever
}' | tac
これでうまくいくはずです。
これはうまくいくかもしれません(GNU sed):
sed -i ':a;$!{N;ba};s/.*#include[^\n]*/&\n#include <new.h>/' file1 file2 fileN
メイン プログラムが開始する前に、複数行のコメントがないと仮定します。
awk '!f && /^ *[a-zA-Z]/{print "#include<newfile.h>";f=1;}1' file