我有一个非常大的scm文件,超过300万行。我通过telnet端口将其发送到虚拟服务器。我需要将代码分成单独的行并将其提供给服务器。它应该发送一行并等待几毫秒才能发送下一行。 例如:
Input:
(define x (WordNode = "frustration")) \n
sleep 50 ms
(define x (WordNode = "Anger")) \n
sleep 50 ms
...
{{1}}
...
答案 0 :(得分:1)
如果你可以使用GNU
sleep
(支持睡眠的小数秒),那就很简单了:
#!/bin/bash
while IFS= read -r line; do
echo "$line"
sleep 0.05
done < file
或者,将其转换为一个小的延迟线实用程序(更符合Unix哲学)。
让我们称之为delay.sh
(不要忘记chmod +x delay.sh
):
#!/bin/bash
while IFS= read -r line; do
echo "$line"
sleep 0.05
done
我们正在从标准输入读取每一行,并将其延迟输出到标准输出。
使用它,例如,像这样:
head -100 file | ./delay.sh | ...
这将从file
获取前100行并逐个提供它,延迟到管道中的下一个命令(可能是您在问题中提到的telnet
)。 / p>
到&#34; delay
&#34;完整的file
:
./delay.sh < file
顺便说一句,如果您的文件长3M
行(正如您声明的那样),请记住延迟50ms
的每一行都需要~42h
。