いくつかのターミナルコマンドを出力するC ++ファイルがあります。各行にタイムスタンプ(ts)を追加するbashスクリプトがあり、特定のターミナル出力にのみタイムスタンプを追加することができるかどうか疑問に思います。
たとえば、0〜100の数字を印刷しますが、「素数が見つかりました!」というメッセージが表示されるC ++ファイルでは、「素数が見つかりました!」という行のタイムスタンプだけが必要です。
sedやgrepで可能ですか?または、発生するパターンを知っている場合にのみ可能です(たとえば、10行ごとにタイムスタンプだけを希望する場合)。後者が可能であればそれを達成する方法はありますか?ありがとうございます!
答え1
byがのコマンドをts
参照すると仮定すると、これは各行の先頭にタイムスタンプを挿入する短いPerlスクリプトであることに注意してください。ts
moreutils
これを簡単にインライン化し、行が正規表現と一致する場合にのみタイムスタンプを追加するように調整できます。
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
詳細についてはマニュアルページを参照してください)。