2017-07-11 19 views
0

私は300万行以上の非常に大きなscmファイルを持っています。私は仮想サーバーへのtelnetポートを介して 'cat'ingしています。私はコードを個々の行に分割し、それをサーバーに送る必要があります。 1行を送信し、次の行を送信する前に数ミリ秒待機する必要があります。 例:大きなscmファイルを個々のコマンドに分割する

File: 

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

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

...

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

sleep 50 ms 

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

sleep 50 ms 

...

+0

なぜ各行の間に待機する必要がありますか? – janos

答えて

1

あなたは(秒の小数のために眠っサポート)GNUsleepを使用できる場合、それは簡単です:

または、これを小さな遅延ラインユーティリティに変更します(詳細はUnixの哲学に基づいています)。私たちは、標準入力から各行を読んでいる

#!/bin/bash 
while IFS= read -r line; do 
    echo "$line" 
    sleep 0.05 
done 

、および標準出力に遅れて出力にそれを:

chmod +x delay.shに忘れてはいけない)のは、それdelay.shを呼ぶことにしましょう。

このように、例えば、それを使用する:

head -100 file | ./delay.sh | ... 

これはおそらく(fileから第100行を取得し、それを養う、一つずつ、パイプライン内の次のコマンドに遅れてますtelnetあなたの質問に記載されています)。

そして「delay」完全fileに:あなたのファイルが(あなたが主張するように)3Mラインの長さである場合

./delay.sh < file 

ところで、50msのための各ラインを遅らせる念頭に置いてクマは~42hがかかります。

+0

だから私は、同じ汚点にファイルThisIsFrustrating.scmを持っていれば、それを開き、それを読み始めますか? –

+0

フィルタとして使用する場合は、パイプラインのどこかに置くだけです。 'cat ThisIsFrustrating.scm | ./delay.sh | telnet ..または何でも。 – randomir

+0

@randomirまたは './delay.sh cxw

関連する問題