1

ログファイルをシェルに読み込み、最後にログに記録されたイベントを出力したいと思います。これらのログは、より大きなスクリプトで使用しているselenium-python自動テスト結果です。このスクリプトには、ログの最後のチャンクが必要です。

次に、出力ファイルの例から最後にログに記録されたイベントの1つの例を示します。

2013-01-10 13:49:55

Notes: 

FAIL: runTest (__main__.changeContent)

Traceback (most recent call last):
  File "demo-about-content-pyunit-w.py", line 294, in runTest
    self.assertEqual(browser.find_element_by_id("descriptionAbout").text, "We are a business used for automated testing and pretty much boring.", 'about desc would not change')
AssertionError: about desc would not change

Ran 1 test in 40.954s>

FAILED (failures=1)

ログファイルには、これに類似した他のログが時系列で含まれています。上記のタイムスタンプを区切り文字/カットオフしきい値として使用して、最後のエントリを出力/スクレイプしたいと思います。正規表現を使ってみtailましたが、どうすればいいのかよくわかりません。効率が重要なので、ファイルを最後から読みたいと思います。この問題をシェルで解決したいのですが、Pythonでの解決も役立つかもしれません。

4

1 に答える 1

1

これがあなたの望むものかどうかはわかりませんが、試してみてください。

tac logfile.log | while read line; do echo ${line};
    [[ "${line}" =~ [0-9]{4}(-[0-9]{2}){2}\ [0-9]{2}(:[0-9]{2}){2} ]] && break;
done | tac

このスニペットは、ファイル「logfile.log」を逆方向に読み取り、指定した形式のタイムスタンプが見つかるまで各行を出力します。行が逆方向に印刷されているため、別の呼び出しでtac出力を並べ替えます。

于 2013-01-21T18:00:03.940 に答える