Exibir caracteres específicos em um horário específico de um arquivo de texto

Exibir caracteres específicos em um horário específico de um arquivo de texto

Como posso exibir um número específico de palavras ou caracteres em um determinado momento usando um loop. Digamos que eu queira exibir 120 palavras em um minuto.

Aqui está o loop que tentei:

FS=$'\n'
for j in `cat $1`;
do
        echo "$j";
        sleep  1;
        clear;
done

Este leva apenas um segundo, mas não funciona com 120 palavras em um minuto ou algo semelhante. Como posso fazer isso?

Responder1

O comando sleep atrasa por um período de tempo especificado (em segundos). Com sleep 1atraso seria de 1 segundo (uma palavra por segundo). Você pode alterar para um atraso maior incrementando o segundo parâmetro ou para um atraso menor que 1 segundo dividi-lo em unidades baixas; Como sleep .1para atraso de 1/10 de segundo ou sleep .001para atraso de 1/1000 de segundo e etc.

Então, se você quiser exibir 120 palavras por minuto, você pode usar sleep .5(isso significa exibir cada palavra em 0,5 segundo, o que também significa 120 palavras em um minuto)

E seu script final seria o seguinte:

#!/bin/bash

for word in $(< "$2");
do
    echo "$word";
    sleep  $1;
    clear;
done

Salve o script nomeado scriptname.she torne-o executável chmod +x scriptname.she execute o script com./scriptname.sh .5 infile

Responder2

É uma prática frequente usar while read line ; do . . .; doneestrutura no bash para ler arquivos linha por linha. Supondo que seu arquivo de entrada tenha uma palavra por linha, é fácil fazer algo assim:

while read line; do printf "%s\n" "$line" ; sleep 3; done < input.txt

Python pode fazer isso facilmente:

#!/usr/bin/env python
import sys,time
for line in sys.stdin:
    print line.strip()
    sys.stdout.flush()
    time.sleep(1)

Uso:

python print_with_delay.py <input.txt 

informação relacionada