次のようなログ ファイルがあります。
11-Sep-2012 00:00:00 clojure.contrib.logging$fn__43$impl_write_BANG___51 invoke INFO: creditAcc(args=[1506112834429596390 7080851004 4500]) 11-Sep-2012 00:00:00 clojure.contrib.logging$fn__43$impl_write_BANG___51 invoke INFO: callProf|tupsCredit|180|[1506112834429596390 7080851004 45] 11-Sep-2012 00:00:00 clojure.contrib.logging$fn__43$impl_write_BANG___51 invoke INFO: creditAcc(args=[1506112834429596390 7080851004 4500]) -> done. 11-Sep-2012 00:00:00 clojure.contrib.logging$fn__43$impl_write_BANG___51 invoke INFO: return(1506112834429596390,0)
ログ ファイルの各エントリは 2 行にわたるため、各エントリはタイムスタンプで始まります。sed を使用して最初の行の末尾にある改行文字を置き換えることができましたが、問題は、ログ エントリの途中に Java スタック トレース メッセージがあることです。sed がスタック トレースを通過すると、エントリの順序が逆になり、INFO または ERROR などで始まり、タイムスタンプが 2 行目に表示されます。したがって、正規表現 [^\d{2}] のようなものを使用して sed にタイムスタンプを最初の行として認識させ、同じ行で改行文字をスペースに置き換えてから値を分割するソリューションを探していました分析用の列。スタックトレース メッセージは空白 [^\s] で始まるため、簡単に識別してスキップできます。
sed または awk を使用してこれを解決する最善の方法は何ですか?