我有一个<timestamp, reading>
类型的~12300000
行文件-
1674587549.228 29214
1674587549.226 29384
1674587549.226 27813
1674587549.226 28403
1674587549.228 28445
...
1674587948.998 121
1674587948.998 126
1674587948.999 119
1674587949.000 126
1674587948.996 156
1674587948.997 152
1674587948.998 156
1674588149.225 316
1674588149.226 310
1674588149.223 150
1674588149.224 152
1674588149.225 150
1674588149.225 144
...
1674588149.225 227
1674588149.226 233
1674588149.226 275
last - first
时间戳等于600
。我想创建一个新文件,从last - nth
时间戳行开始,直到结束。
例如,如果为n=200
,则新文件应以1674588149.226-200
开头,即从1674587949.000 126
到1674588149.226 275
。
这可以用linux命令/ shell脚本来完成吗?如果可以,怎么做?谢谢。
2条答案
按热度按时间ljo96ir51#
如果我没理解错的话,您试图创建的文件从最后一行开始,每个文件中的行数都是恒定的。
如果是,此脚本将执行该任务。
如果只需要一个文件,则可以删除与循环和索引值迭代关联的逻辑。
注:每个文件的名称对应于每个文件中最后一行的第一部分(即记录的最后一个条目)。
这个例子对5行的分组进行拆分。你可以用100或200来替换5行。
wwtsj6pe2#
如果你只想要一个日志的最后200行条目,那么最简单的方法就是使用tail。
如果要创建多个文件,每个文件包含200行,则可以使用以下序列
在包括为每个切片${newLogName}切片分配唯一名称循环中。
或者,您可以在开始时创建一个反向日志,然后沿着反向列表向下创建子列表,但要记住在以最终形式保存这些列表之前反向每个候选列表。