sedによるソースコードにinclude文を一括挿入するスクリプト
ファイル中の最初のincludeの箇所にあるincludeを追加するスクリプトを考えた。
sedは行単位で処理をするためにファイルの"最初の行"の指定に悩んだが、
grepで行番号を引っこ抜いて、sedで行番号指定することで対応した。
うーんもっとスマートな方法があるような気がします。
下記例では、引数で渡したファイル名に #include "CommonDef.h" を追加します。
bash script
#!/bin/bash for file in $@; do sed -i '/include.*CommonDef.h/d' $file finc="$(grep -n include $file | head -1 | cut -d':' -f 1)" scr="$finc s/^/#include \"CommonDef.h\"\n/" sed -i "$scr" $file done
使用例
たとえば a.c があった場合、こんな感じで挿入されます
$ cat a.c // a.c #include <iostream> #include <vector> #include <CommonDef.h> #include "CommonDef.h" using namespace std; int main() { } tkondou@medusa ~/src $ insertinclude a.c tkondou@medusa ~/src $ cat a.c // a.c #include "CommonDef.h" #include <iostream> #include <vector> using namespace std; int main() { }
参考
http://www.geocities.jp/abandonment_cat/cygwin/bshell/filter.html
sed & awkプログラミング 改訂版 (A nutshell handbook)
- 作者: Dale Dougherty,Arnold Robbins,福崎俊博
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 1997/10/01
- メディア: 大型本
- 購入: 1人 クリック: 45回
- この商品を含むブログ (33件) を見る