Linuxでログ解析するスクリプトを作りたいです

AAAA0001(ジョブID) 開始 2017/9/10 17:00:00 1001(プロセスID)
AAAA0001(ジョブID) 終了 2017/9/10 17:01:00 1001(プロセスID)

こんな感じのログファイルを、開始と終了を結合して1行にしたいです
但しファイルの件数が数百万件あるので、1件ずつ読んで処理というのを避けたい

そこでまず開始と終了をgrepで別ファイルに分割し、
ジョブID・プロセスIDでsortしてjoinというのをやってみたのですが、
同ジョブでプロセスIDが被ってることがあり上手く行きませんでした

次にジョブID・プロセスID・日時でsortして単純に上下2行を1行にしてみましたが、
稀に開始・終了の一方が無いことがあり、1回ずれるとそこから最後までずれてしまいました
何かいい方法はないでしょうか