ナンクル力学系 home

google-diff-match-patchを使って文章の差分を単語単位でとるCLIプログラムを書いた

oogle-diff-match-patch by takafumi_a, on Flickr

…と言っても実は google-diff-match-patch っていうライブラリを使えば簡単にできるって話で、そのデモサイト: Diff, Match and Patch: Demo of Diff と同じことが出来るCLIを書いただけ。要Python。

Python無かったりインストール面倒な人は、デモサイトの出力結果をHTMLメールにコピペして使えば良いんじゃないかな。

あと、自分で確認できれば良い時は wdiff っていうコマンドを使えば単語単位で diff がとれる。--terminal オプションをつければ見易くなるのでおすすめ。Ubuntuなら sudo apt-get install wdiff wdiff-doc でインストール出来る。

google-diff-match-patch をダウンロードしてインストール

wget http://google-diff-match-patch.googlecode.com/files/diff_match_patch_20110217.zip
unzip diff_match_patch_20110217.zip
cp diff_match_patch_20110217/python/diff_match_patch.py ~/pymodules/ #任意

~/pymodules/$PYTHONPATH に設定されている適当なディレクトリ。 面倒なら次にダウンロードするスクリプト(gdmp.py)と同じディレクトリに置けばOK。

文章の差分をとる方法

Command line tool for google-diff-match-patch — Gist をダウンロードして使う。これが、今回書いたやつ。

wget https://gist.github.com/raw/899325/gdmp.py
python gdmp.py FILE1 FILE2 -o diff.html

これでdiff.htmlに差分が出力されるので、ブラウザで開いてHTMLメールに張り付けるなりファイルをそのままメールするなりすれば良い。

LaTeXファイルを扱う時は、 detex でLaTeXコマンドを消してから差分をとれば良い。zshなら、

python gdmp.py <(detex -l FILE1.tex) <(detex -l FILE2.tex) -o diff.html

でOK。

論文とかを人に添削してもらう時に、どこを変更したかを分かりやすく伝えたい時が ある。ワードなり使ってれば良いんだろうけど、LaTeXや普通のテキストファイルを 扱ってくれるプログラムが見つからなかったので書いてみた、という話でした。

blog comments powered by Disqus