.diffファイルから特定ファイルの差分のみ取り出すスクリプト
以下のようなhoge.diffファイルがあったとして、
hoge.diff
--- hoge.orig/fuga.pl +++ hoge/fuga.pl @@ -32,8 +32,4 @@ ...省略... --- hoge.orig/hidebu.py +++ hoge/hidebu.py @@ -0,0 +1,6 @@ ...省略... --- hoge.orig/abeshi.pl +++ hoge/abeshi.pl @@ -49,3 +50,6 @@ ...省略...
hidebu.pyの差分のみ取り出したいとき、sedを使うなら以下のようなスクリプトを用意して、
cut_hidebu.sed:
#!/bin/sed -f /^---.*hidebu\.py/{ :loop n /^---/Q b loop } d
$ []chmod a+x cut_hidebu.sed[] $ []./cut_hidebu.sed hoge.diff[] []--- hoge.orig/hidebu.py[] []+++ hoge/hidebu.py[] []@@ -0,0 +1,6 @@[] []...省略...[]
でOK。
sedを使って一行で行くなら、
$ []sed -n '/^---.*hidebu\.py/{:loop;p;n;/^---/Q;b loop;}' hoge.diff[]
sedの-nオプションのため、「n;」の前に「p;」を挿入する必要がある。
もし「}」の後ろにコマンドが続くなら、「}」の後ろに「;」をつける必要がある点に注意。(←はまった)