Há uma versão em perl de scriptreplay
que está em domínio público, fornecida por Joey Hess: scriptreplay .
Você pode adaptar isso para adicionar recursos de início / fim (o autor colocou essa implementação no domínio público).
Aqui está uma modificação rápida e suja desse código que leva dois parâmetros adicionais - o horário de início (em segundos desde o início, o padrão 0) e o horário de término (opcional, é executado até o final, se não especificado). Adapte-se às suas necessidades:
#!/usr/bin/perl -w
use strict;
$|=1;
open (TIMING, shift)
or die "cannot read timing info: $!";
open (TYPESCRIPT, shift || 'typescript')
or die "cannot read typescript: $!";
my $divisor=shift || 1;
my $start_sec=shift || 0;
my $end_sec=shift;
# Read starting timestamp line and ignore.
<TYPESCRIPT>;
my $printing = ($start_sec > 0 ? 0 : 1);
my $elapsed = 0;
my $block;
my $oldblock='';
while (<TIMING>) {
my ($delay, $blocksize)=split ' ', $_, 2;
if ($printing && ($delay / $divisor > 0.0001)) {
select(undef, undef, undef, $delay / $divisor - 0.0001);
}
read(TYPESCRIPT, $block, $blocksize) or die "read failure: $!";
print $oldblock if ($printing);
$elapsed += $delay;
exit if ((defined $end_sec) && ($elapsed > $end_sec));
$printing = ($elapsed > $start_sec);
$oldblock=$block;
}
print $oldblock;