Zeigen Sie bestimmte Zeichen zu einer bestimmten Zeit aus einer Textdatei an

Zeigen Sie bestimmte Zeichen zu einer bestimmten Zeit aus einer Textdatei an

Wie kann ich mithilfe einer Schleife eine bestimmte Anzahl von Wörtern oder Zeichen in einer bestimmten Zeit anzeigen? Nehmen wir an, ich möchte 120 Wörter in einer Minute anzeigen.

Hier ist die Schleife, die ich ausprobiert habe:

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

Dies dauert nur eine Sekunde, funktioniert aber nicht für 120 Wörter in einer Minute oder ähnliches. Wie kann ich das machen?

Antwort1

Der Sleep-Befehl bewirkt eine Verzögerung für eine bestimmte Zeitspanne (in Sekunden). Eine sleep 1Verzögerung wäre 1 Sekunde (ein Wort pro Sekunde). Sie können die Verzögerung verlängern, indem Sie den zweiten Parameter erhöhen oder ihn für eine Verzögerung von weniger als 1 Sekunde in kleinere Einheiten aufteilen, z. B. sleep .1für eine Verzögerung von 1/10 Sekunde oder sleep .0011/1000 Sekunde usw.

Wenn Sie also 120 Wörter pro Minute anzeigen möchten, können Sie Folgendes verwenden sleep .5(das bedeutet, jedes Wort wird in 0,5 Sekunden angezeigt, was auch 120 Wörter pro Minute bedeutet).

Und Ihr endgültiges Skript würde wie folgt aussehen:

#!/bin/bash

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

Speichern Sie das Skript mit dem Namen scriptname.shund machen Sie es ausführbar. chmod +x scriptname.shFühren Sie das Skript dann mit./scriptname.sh .5 infile

Antwort2

Es ist üblich, while read line ; do . . .; donein Bash eine Struktur zu verwenden, um Dateien Zeile für Zeile zu lesen. Vorausgesetzt, Ihre Eingabedatei enthält ein Wort pro Zeile, ist es einfach, so etwas zu tun:

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

Python kann dies ganz einfach tun:

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

Verwendung:

python print_with_delay.py <input.txt 

verwandte Informationen