假设你有一个名为“filename”
的大日志文件如果您 tail -f filename ,那么只有当文件名自行更新时才会有一个流
如果您 cat filename ,那么您有一个流,但如果您是CPU,则无法读取它 比英特尔8088更新
如果您 cat filename |更多然后你逐页有一个流,可能会破坏你的空格键
如何以给定的速率列出文件(例如:每0.05秒一行)所以我有时间阅读,但我不需要按空格键数百次?
(我不使用 | grep 因为在我的特殊情况下,我不知道究竟要搜索什么)
答案 0 :(得分:7)
yes | pv --quiet --rate-limit 10
我在这里使用yes
来获取快速文本来源;由于许多原因,pv
是一个非常有用的工具,但它的一个功能是速率限制器。你需要告诉它安静,所以它不打印它的进度指示器。限制是以每秒字节数为单位。
另请参阅:https://superuser.com/questions/526242/cat-file-to-terminal-at-particular-speed-of-lines-per-second
答案 1 :(得分:5)
使用
perl -MTime::HiRes=usleep -pe '$|=1;usleep(300000)'
#or
perl -pe 'select(undef,undef,undef,0.3)'
您可以将上面的shell函数添加到~/.profile
例如
slowcat
slowcat() {
perl -MTime::HiRes=usleep -pe '$|=1;usleep(300000)' "$@"
}
将接受文件名以及管道输入
slowcat filenames....
command | slowcat
以下将产生输出作为典型的电影电脑屏幕或通过300Baud调制解调器的连接......
perl -MTime::HiRes=usleep -ne '$|=1;while($c=getc(*stdin)){usleep(33000);print $c}'
答案 2 :(得分:3)
也许是这样的:
#!/bin/bash
while read -r line; do
echo "$line"; # do whatever you want with line
sleep 0.05
done < file
答案 3 :(得分:1)
希望这会有所帮助:
cat filename|awk '{print $0 ; system("sleep 0.05")}'
由于上述解决方案的大多数人都很脏,我会建议以下一个班轮:
while read line; do echo $line; sleep 0.05 ; done < filename