将大型scm文件拆分为单个命令

时间:2017-07-11 17:03:06

标签: linux bash shell

我有一个非常大的scm文件,超过300万行。我通过telnet端口将其发送到虚拟服务器。我需要将代码分成单独的行并将其提供给服务器。它应该发送一行并等待几毫秒才能发送下一行。 例如:

Input:
(define x (WordNode = "frustration")) \n

sleep 50 ms

(define x (WordNode = "Anger")) \n

sleep 50 ms

...

{{1}}

...

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