0

sedしばらくの間、私は'sa\コマンドで逃げることを望んでいましたが、 sed(とにかく、私の手の中では) 状態を維持するのが本当に好きではありません (すべての #include の後に挿入します)。

それで、これを行う方法はありsedますか?これを行うスマートな方法はありますか?

それがうまくいくなら、私は通常の Python/Ruby スクリプトを書くことに頼りますが、これはおそらく誰かがいつかどこかでぶつかった問題のようです。

4

3 に答える 3

3

sed を適用する前に、コマンド tac を使用してファイルを 1 行ずつリバースし、sedに追加ではなく挿入を実行させることができます。そしてもちろん、sed がこの挿入を 1 回だけ行うようにしてください。このような:

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

これでうまくいくはずです。

于 2012-10-25T07:55:07.473 に答える
1

これはうまくいくかもしれません(GNU sed):

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

メイン プログラムが開始する前に、複数行のコメントがないと仮定します。

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