Отображение определенных символов в определенное время из текстового файла

Отображение определенных символов в определенное время из текстового файла

Как я могу отобразить определенное количество слов или символов за определенное время с помощью цикла. Допустим, я хочу отобразить 120 слов за одну минуту.

Вот цикл, который я попробовал:

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

Это занимает всего одну секунду, но не работает для 120 слов за одну минуту или что-то в этом роде. Как мне это сделать?

решение1

Команда sleep создает задержку на указанное время (в секундах). С sleep 1задержкой это будет 1 секунда (одно слово в секунду). Вы можете изменить задержку на большее время, увеличив второй параметр, или для задержки менее 1 секунды разделить ее на меньшие единицы; например, sleep .1для задержки 1/10 секунды или sleep .001для задержки 1/1000 секунды и т. д.

Итак, если вы хотите отображать 120 слов в минуту, вы можете использовать sleep .5(это означает отображение каждого слова за 0,5 секунды, что также означает 120 слов в минуту)

И ваш окончательный сценарий будет выглядеть следующим образом:

#!/bin/bash

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

Сохраните скрипт с именем scriptname.shи сделайте его исполняемым, chmod +x scriptname.shа затем запустите скрипт с помощью./scriptname.sh .5 infile

решение2

Часто в bash используется while read line ; do . . .; doneструктура для чтения файла построчно. Если предположить, что в вашем входном файле по одному слову на строку, то легко сделать что-то вроде этого:

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

Python может сделать это довольно легко:

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

Использование:

python print_with_delay.py <input.txt 

Связанный контент