次のCSVファイル形式について考えてみましょう。
server_name status_code timestamp probe_name
ここで、status_codeはIまたはEのいずれかであり、すべてのフィールドは表で区切られます
例として、次のCSV行を検討できます。
albatros.benches.com I 14:55:23.145 througput_probe
すべてのCSVファイルには、1日分のログが含まれています。すべてのhh:mm:ssタイムスタンプの前に実際のYYYY-mm-ddを付けようとしているので、結果の行は次のようになります。
albatros.benches.com I 2013-02-25 14:55:23.145 througput_probe
ボーナスとして、CSVファイルには日付が含まれているため(ファイル名はlog_2013_02_25.txt)、これらのファイルの多くは(もちろんさまざまな日に)「シード」されるので、ファイル名を自動的に使用できればと思います。その中の適切な日を取得し、タイムスタンプ変換に適用するためのシードとして。
編集:ファイル名はlog_YYYY_MM_DD.txtであり、前述のlog_YYYY-MM-DD.txtではありません)
私のsedと正規表現の知識はかなり限られています。これまでのところ、私は次のようなものを使用しています:
s/I^T/I^T 2013-02-25 /g
s/E^T/E^T 2013-02-25 /g
(^Tは実際には^Vの後にタブキーを押すことです)
私のすべてのファイルにありますが、これは本当に私には非常に厄介に見えます。ある日、別のステータスコード(たとえばX)を追加すると、このトリックは機能しません。sedが3番目のフィールドを処理し、プレフィックスを付けると、エラーが発生しやすくなると思います。これを正しく行う方法がわかりません。
どんなアイデアでも大歓迎です!
ありがとうございました