ログファイルの日付文字列列からタイムスタンプ列へ

ログファイルの日付文字列列からタイムスタンプ列へ

log.txt次のサンプル出力があります。

...
10-Feb-2022 15:15:14.099 lorem
10-Feb-2022 15:15:15.133 ipsum
10-Feb-2022 15:15:16.233 dolor
...

フィルタリングされたlog.txtの出力は次のようになると予想しました。

...
1644480914 lorem
1644480915 ipsum
1644480916 dolor
...

日付文字列をタイムスタンプに変換する方法を見つけました。

date --date='10-Feb-2022 15:15:14.099' +"%s"
Output:
1644480914

私の脳はまだその日付コマンドをlog.txtに適用する方法を理解していません。

また、その日付コマンドをどのようにパイプしますか?

printf "10-Feb-2022 15.15.17.012 water" | date --date=<what must i put here?> + "%s"

パイプラインコマンドの出力は、他の列を妨げないことを除いて同じであると予想されます。1644480917 water

答え1

あなたのコマンドは、日付/時刻を渡すdateオプションを許可するように見えます。-d次のことを試してください

cut -d' ' -f-2 file | date +%s -f- | paste -d' ' - file | cut -d' ' -f1,4-
1644502514 lorem
1644502515 ipsum
1644502516 dolor

cut入力から日付/時刻フィールドを取得し(readDATEFILE)オプションを使用してコマンドに入力し、dateそれを入力ファイルに返し、前の日付/時刻フィールドを出力します。-fpastecut

関連情報