某些终端输出的时间戳

某些终端输出的时间戳

我有一个输出一些终端命令的 C++ 文件。我有 bash 脚本来向每一行添加时间戳 (ts),但我想知道是否可以只向特定的终端输出添加时间戳。

例如,在打印出数字 0-100 的 C++ 文件上,但显示“找到一个素数!”我只想要“找到一个素数!”的行上的时间戳。

这对于 sed 或 grep 来说是可能的吗?或者只有当你知道它们出现的模式时才可能(就像我只想要每 10 行一个时间戳)。如果后者是可能的,那么是否也有办法实现呢?谢谢你!

答案1

假设 by 是tsts来自 的命令moreutils,请注意,这是一个简短的 Perl 脚本,会在每行的开头插入时间戳。

您可以轻松内联它并适应仅在该行与正则表达式匹配时添加时间戳:

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有关详细信息,请查看手册页)。

相关内容