1. ホーム
  2. unix

[解決済み] 標準入力にタイムスタンプを前置するUnixユーティリティはありますか?

2022-04-20 09:13:59

質問

私はPythonでこのための簡単な小さなスクリプトを書いてしまいましたが、テキストを送り込んで各行の先頭にテキストを付加するユーティリティはないかと考えていました -- 私の特定のケースでは、タイムスタンプです。 理想的には、次のような使い方です。

cat somefile.txt | prepend-timestamp

(sedに答える前に、私はこれを試してみました。

cat somefile.txt | sed "s/^/`date`/"

しかし、これでは sed が実行されたときに一度しか date コマンドを評価しないので、各行に同じタイムスタンプが誤って付加されます)。

解決方法は?

を使用してみてください。 awk :

<command> | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'

を確認する必要があるかもしれません。 <command> はラインバッファ出力、つまり各行の後に出力ストリームをフラッシュします。 awk は、入力パイプに行の終わりが現れた時刻を追加します。

もし awk がエラーを表示した場合は gawk の代わりに