我有一个输出一些终端命令的 C++ 文件。我有 bash 脚本来向每一行添加时间戳 (ts),但我想知道是否可以只向特定的终端输出添加时间戳。
例如,在打印出数字 0-100 的 C++ 文件上,但显示“找到一个素数!”我只想要“找到一个素数!”的行上的时间戳。
这对于 sed 或 grep 来说是可能的吗?或者只有当你知道它们出现的模式时才可能(就像我只想要每 10 行一个时间戳)。如果后者是可能的,那么是否也有办法实现呢?谢谢你!
答案1
假设 by 是ts
指ts
来自 的命令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
有关详细信息,请查看手册页)。