Exibe caracteres específicos em um tempo específico a partir de um arquivo de texto

0

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

Aqui está o loop que eu tentei:

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

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

    
por Hassen Fatima 22.03.2015 / 00:40

2 respostas

2

O comando sleep faz atraso por um período de tempo especificado (em segundos). Com sleep 1 , o atraso seria de 1 segundo (uma palavra por segundo). Você pode mudar para mais tempo retardando o segundo parâmetro ou para atrasar menos de 1 segundo dividindo-o em unidades baixas; Como sleep .1 para atraso de 1/10 segundos ou sleep .001 para atraso de 1/1000 segundos 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 roteiro final seria o seguinte:

#!/bin/bash

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

Salve o script chamado scriptname.sh e torne-o executável por chmod +x scriptname.sh e, em seguida, execute o script com ./scriptname.sh .5 infile

    
por sddgob 22.03.2015 / 08:39
0

É uma prática frequente usar while read line ; do . . .; done structure no bash para ler o arquivo 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

O Python pode fazer isso com bastante facilidade:

#!/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 
    
por Sergiy Kolodyazhnyy 31.12.2016 / 01:44