2つの異なるOpen Document Textファイル(odt)に含まれるスタイルをどのように区別しますか?
たとえば、Aという人が文書を作成し、タイトル/タイトルスタイルを変更して、共有ドライブに文書を保存します。 Bはスタイルを修正して別の名前で保存したが、修正が微妙だった。どのスタイルが変更されたかを伝えるためのツールは何ですか?
odtファイルを「圧縮解除」する必要があるソリューションが有効です。
ただstyles.xmlを比較することはうまくいきません。なぜなら、すべてが一行にあり、まったく同じでない場合は、すべてが変更されたと思うからです。
答え1
お持ちの場合解凍するそしてXML2インストールしたら、次のことができます。
#!/bin/bash
a="$1"
b="$2"
diff -u <(unzip -p "$a" styles.xml | xml2) \
<(unzip -p "$b" styles.xml | xml2)
xml2
grep
XMLファイルを、次の行ベースのsed
ツールで使用するのに適した形式に変換します。cut
diff
xml2はどこに行きましたか?)しかし、まだ非常に有用で廃止されたソフトウェアであり、いくつかのディストリビューション(sudo apt-get install xml2
Debianやその派生など)はまだパッケージとして提供されています。
注:.odtは長年にわたって変更されているため、.odtファイルの一部のバージョンはzipファイル内の他のファイル(またはサブディレクトリ)にスタイルを保持できます。これらのいずれかが発生した場合は、まず各.odtファイルを確認するようにスクリプトを変更する必要があります(例:次のようにunzip -vl
)。
個人的には、bashや他のシェルで上記のスクリプトよりも複雑なことはしません。私はパールを主に使用します。ODF::lpODまたはDIYでアーカイブ::郵便番号そしてPerlのXML処理モジュールの1つ(おそらくXML::シンプル)。おそらくアルゴリズム::差また。
しかし、わからない場合、.odt
ファイルはXML、画像、その他のファイルを含むzipファイルにすぎず、zipの最上位ディレクトリまたはサブディレクトリにあります。