次のようなテキストストリームがあります。
----------------------------------------
s123456789_9780
heartbeat:test @ 1344280205000000: '0'
heartbeat:test @ 1344272490000000: '0'
これらの長い数値は、マイクロ秒単位のタイムスタンプです。これらのタイムスタンプをより人間が理解できる日付に変更するある種のパイプを介してこの出力を実行したいと思います。
タイムスタンプ(次のコロン付き)だけを指定すると、それを実行できるdateコマンドがあります。
$ date --date=@$(echo 1344272490000000: | sed 's/.......$//') +%Y/%d/%m-%H:%M:%S
2012/06/08-10:01:30
私はこのようなものになりたいです:
----------------------------------------
s123456789_9780
heartbeat:test @ 2012/06/08-12:10:05: '0'
heartbeat:test @ 2012/06/08-10:01:30: '0'
タイムスタンプを照合して、そのタイムスタンプでシェル関数を呼び出す値に置き換えることはできないと思いますsed
(ただし、間違って表示されることを望んでいます)。おそらくawk
それを行うことができますか?私はあまりよく知らないawk
。
私にとってトリッキーに思えるもう1つの部分は、一致しない行を変更せずに通過させることです。
もちろん、これを行うPythonプログラムを作成することもできますが、可能であればこれをシェルに保持したいと思います(これはシェルスクリプト内で生成され、外部ファイルに依存しないようにします)。