サーバー アプリケーションからログ ファイルを「スクレイピング」するスクリプトを作成するために使用する言語を決定しようとしています。スクリプトの一般的なアルゴリズムは次のようになります (もちろん、細かい部分はすべてハッシュ化しています)。
1. Search for any line that contains (ACK_STRING, PARTIAL_FILL_STRING, or COMPLETE_FILL_STRING) and not AUTO_HEDGER_STRING
2. For each result
{
Extract time, order ID, symbol, status, theo, price from line
Get intermediate edge value
If buy, edge = (theo - price)
Else, edge = (price - theo)
If order ID not found in order ID -> orderquoteinfo structure
{
Add (edge * qty of order) to total edge
}
Add edge to total edge received
Add (edge * qty filled) to total edge received
Store info in order ID -> orderquoteinfo structure
}
3.
For each order ID -> orderquoteinfo structure
{
Print results in CSV format
Time, Order ID, Symbol, Status, B/S, Qty, Price, Theo, Edge
}
4. Print total edge missed
Print total edge - total edge received
5. Print total edge received
したがって、基本的には、C++ のマップや Perl の連想配列に似たデータ構造を使用して、ログ ファイルの各行から取得した情報を保持したいと考えています。私はシェルスクリプトに精通していませんが、ここでどの言語が意味を成すかを確認しようとしています. 私がログを取得しているサーバー アプリケーションは Linux サーバー上にあります (そして、すぐに別のプラットフォームに移植される可能性はほとんどありません)。したがって、Perl の移植性という要素は、私の頭の中には関係ありません。
私にとっては、シェル スクリプトよりも Perl スクリプトの作成に慣れているだけです。ただし、ここでシェルスクリプトを作成する方が理にかなっている場合は、シェルスクリプトを作成したいと思います。このスクリプトは、スケジュールされたタスクとして 1 日 1 回実行されます (ギブ オア テイク)。基本的に、スクリプトは、ログ ファイルからメトリック データを簡単に取得する方法として機能します。私が「スクレイピング」という用語を使用するのは、変更される可能性が最も低いが、そのリスクが残っているログ ファイル内の特定の文字列を検索するためです。
では、シェル スクリプトを作成するか、Perl を使用する必要がありますか? もっと理にかなっていることは何ですか?ここは関係ありますか?