大規模ログファイルからテキストおよびバイナリ抜粋を削除するシェルスクリプトまたはコマンド

大規模ログファイルからテキストおよびバイナリ抜粋を削除するシェルスクリプトまたはコマンド

毎日作成される大容量ログファイルから大容量バイナリファイル(PDFファイル)を削除する必要があります。これは私たちのサーバーで多くのスペースを占めています。ログをより小さく管理しやすくするために、ログから大きなPDFを削除する必要があります。

文字列間のテキスト(またはバイナリ)を取り出す必要があります。

  • <my:PDF>そして</my:PDF>
  • <applicationForm>そして</applicationForm>
  • <image>そして</image>
  • <extractedSignature>そして</extractedSignature>

sedユーティリティがこれを実行できるかどうかはわかりません。これらのファイルはサイズが大きく、切り取る必要があります。私はログローテーションアドバイスを探しているのではなく、上記の文字の間にあるこれらの大きなテキストログを削除できるスクリプトやコマンドだけを探しています。私は何をすべきかわかりません。このファイルはかなり大きいです。これを達成するために、sed、tail、head、tr、または他のツールを使用する方法がわかりません。

ベストアンサー1

ログファイルが実際にXML形式のようです。それでは、どうすればいいですか?本物あなたがすべきことは、XMLパーサーを使用することです。読むこの有名なStackOverflowの答えより多くの情報を知りたい場合。

説明によると、SAXベースのパーサーはおそらく最善の選択肢です。これは、ファイル全体をメモリにロードする必要がないストリーム指向のパーサです。 XMLでは非常に単純な変換のみを行うため、XSLTはおそらく非常に良い候補になります(使用すると速度が速くなります)。xsltprocからlibxslt)。これは潜在的に関連技術を示すSO回答

おすすめ記事