Faça a cauda -F beep uma vez para cada linha:
bel='echo foo | tr -c -s 'windowsize=10
declare -ai isr0line isr1line r0sum r1sum i
for ((i=0; $i<$windowsize;i+=1)) ; do isr0line[$i]=0; isr1line[$i]=0; done
i=0
while read line
do
r0sum=$(($r0sum - ${isr0line[$i]}))
r1sum=$(($r1sum - ${isr1line[$i]}))
case "$line" in
R0*) isr0line[$i]=1; isr1line[$i]=0; ;;
R1*) isr1line[$i]=1; isr0line[$i]=0; ;;
*) isr0line[$i]=0; isr1line[$i]=0; ;;
esac
r0sum=$(($r0sum + ${isr0line[$i]}))
r1sum=$(($r1sum + ${isr1line[$i]}))
echo "R0 lines $r0sum R1 lines $r1sum"
i=$((($i + 1) % $windowsize))
done
7' 'bel='echo foo | tr -c -s 'windowsize=10
declare -ai isr0line isr1line r0sum r1sum i
for ((i=0; $i<$windowsize;i+=1)) ; do isr0line[$i]=0; isr1line[$i]=0; done
i=0
while read line
do
r0sum=$(($r0sum - ${isr0line[$i]}))
r1sum=$(($r1sum - ${isr1line[$i]}))
case "$line" in
R0*) isr0line[$i]=1; isr1line[$i]=0; ;;
R1*) isr1line[$i]=1; isr0line[$i]=0; ;;
*) isr0line[$i]=0; isr1line[$i]=0; ;;
esac
r0sum=$(($r0sum + ${isr0line[$i]}))
r1sum=$(($r1sum + ${isr1line[$i]}))
echo "R0 lines $r0sum R1 lines $r1sum"
i=$((($i + 1) % $windowsize))
done
7' '%pre%7''
tail -F file | sed "s/\$/$bel/"
7''
tail -F file | sed "s/\$/$bel/"
Quanto ao uso do shell para calcular uma média móvel, aqui está um script bash que rastreia o número de linhas R0 e R1 dentro de uma janela móvel de tamanho $ windowsize. Variáveis de rastreamento são r0sum e r1sum.
%pre%