GraphViz ドット言語で記述された HDF5 ファイル形式用に作成したドキュメントがいくつかあります。(これは、中括弧がたくさんある C に似た言語です。) このマスター ファイルには、次のような多数の要素が含まれています。
subgraph cluster_clustername {
...
lots of stuff including more curly braces spanning multiple lines
...
}
clustername に基づいてこのテキスト ブロックを抽出したいと考えています。(すべてを含む超大規模なグラフではなく、これらのサブグラフのグラフを個別に作成したいと考えています。各サブグラフ クラスタは、HDF5 外部ソフトリンクを介して接続された個別の HDF5 ファイルです。)
この目的のテキストの塊を抽出する方法があるはずです (特定のテキスト パターンの後の最初の { と終了 } を複数の行にまたがって一致させる演習)。これは、普及しているため、比較的一般的なタスクのようです。 C および C に似た言語。
私の考えでは、これを達成するための最有力候補のツールは次のとおりです。
おかしい
パイソン
gvpr - graphviz で提供されるグラフ ストリーム エディター (ただし、これは他の人にとっては役に立ちません。同じ質問をしている C プログラマーや、Web 上にいくつかの例が存在し、構文がわかりにくいと言う)
シード
現在、マスター ファイルを維持し、Mx ediff-regions-linewise を使用して Emacs の各派生ファイルを更新しますが、自動化された (Make を使用してドキュメント ファイルを作成できるようにするため) 派生ファイルを生成する堅牢な方法が必要です。私がささやかな経験を持っている上記の唯一のツールはsedですが、パターンが複雑で複数行にまたがっているため、awk や python のようなツールがこのタスクにより適していると思います。
実際、私は awk で参照カウントに似た手法を試しましたが、awk のより微妙な動作のいくつかを理解するのに問題があり、過去に awk 1 ライナーしか実際に使用していませんでした。
ご協力いただきありがとうございます。-Z