一部の端末出力のタイムスタンプ

一部の端末出力のタイムスタンプ

いくつかのターミナルコマンドを出力するC ++ファイルがあります。各行にタイムスタンプ(ts)を追加するbashスクリプトがあり、特定のターミナル出力にのみタイムスタンプを追加することができるかどうか疑問に思います。

たとえば、0〜100の数字を印刷しますが、「素数が見つかりました!」というメッセージが表示されるC ++ファイルでは、「素数が見つかりました!」という行のタイムスタンプだけが必要です。

sedやgrepで可能ですか?または、発生するパターンを知っている場合にのみ可能です(たとえば、10行ごとにタイムスタンプだけを希望する場合)。後者が可能であればそれを達成する方法はありますか?ありがとうございます!

ベストアンサー1

byがのコマンドをts参照すると仮定すると、これは各行の先頭にタイムスタンプを挿入する短いPerlスクリプトであることに注意してください。tsmoreutils

これを簡単にインライン化し、行が正規表現と一致する場合にのみタイムスタンプを追加するように調整できます。

c++-program | perl -MPOSIX -pe '
  $_ = strftime("%FT%T%z ",localtime) . $_ if /prime number/i'

例えば。

または、if $. % 10 == 1最初の行から始めて、10行ごとにタイムスタンプを取得します。

または組み合わせ:if /prime number/i || $. % 10 == 1

たとえば、ここでは%FT%T%zあいまいな標準タイムスタンプを取得するために使用されますが、2022-05-26T17:56:34+0100必要な形式に調整できます(strftime詳細についてはマニュアルページを参照してください)。

おすすめ記事