sdiffを使って差分のあるファイルのマージをしてみます。
まずは実験ファイルの作成をします。数列が格納されたファイルaを作り、ファイルbへコピーし、ファイルbの偶数行目に差分を施します。
takk@deb8:~/tmp$ seq 10 >a takk@deb8:~/tmp$ cp a b
偶数行への修正はsedでフィルタリング。
takk@deb8:~/tmp$ sed -i '2~2s/$/0/' b
aとbを並べてみると、
takk@deb8:~/tmp$ paste a b 1 1 2 20 3 3 4 40 5 5 6 60 7 7 8 80 9 9 10 100 takk@deb8:~/tmp$
さて、この2つのファイルをマージしましょう。マージした結果はファイルcへ格納します。
takk@deb8:~/tmp$ sdiff a b -o c 1 1 2 | 20 %
差分がある箇所でプロンプト%が表示され、入力を促します。
ここでは左を適用したいので、lを入力してEnterします。
%l 3 3 4 | 40 %
残りは全部右を選択します。rを入力。
%r 5 5 6 | 60 %r 7 7 8 | 80 %r 9 9 10 | 100 %r takk@deb8:~/tmp$
a b cを並べて見てみましょう。
takk@deb8:~/tmp$ paste a b c 1 1 1 2 20 2 3 3 3 4 40 40 5 5 5 6 60 60 7 7 7 8 80 80 9 9 9 10 100 100 takk@deb8:~/tmp$
意図したマージになっています。
コメント