텍스트 파일에서 특정 시간의 특정 문자 표시

텍스트 파일에서 특정 시간의 특정 문자 표시

루프를 사용하여 주어진 시간에 특정 수의 단어나 문자를 표시하려면 어떻게 해야 합니까? 1분에 120개의 단어를 표시하고 싶다고 가정해 보겠습니다.

내가 시도한 루프는 다음과 같습니다.

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

이 작업은 1초밖에 걸리지 않지만 1분에 120단어 정도는 작동하지 않습니다. 어떻게 해야 하나요?

답변1

sleep 명령은 지정된 시간(초) 동안 지연됩니다. 지연 sleep 1시간은 1초(초당 한 단어)입니다. 두 번째 매개변수를 증가시켜 더 많은 시간 지연을 변경하거나 1초 미만의 지연을 위해 낮은 단위로 나눌 수 있습니다. sleep .11/10초 지연 또는 sleep .0011/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

while read line ; do . . .; doneBash에서 구조를 사용하여 파일을 한 줄씩 읽는 것이 자주 사용됩니다 . 입력 파일에 한 줄에 하나의 단어가 있다고 가정하면 다음과 같이 쉽게 수행할 수 있습니다.

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 

관련 정보