次の行で継続的に更新されるテキストファイルがあります。
On 29-08-2018 18:30:29:05 bacteria detected 20 Machine learning error 10
など(毎秒ごとに新しい行を受け取ります)。
18:30:29
私のC ++プログラムから開始時間と停止時間(形式)を取得します。これは正しいアプローチですか?
string er = "system ./RUN.sh ";
er = er + start + stop;
system(er.c_str());
次に、.shファイルで次の操作を行います。
read start
read stop
入力を読むには
次の質問は、ファイルから行を読み取って関連時間を検索し、停止時間が新しいファイルに達するまで行全体をコピーする方法です。
その時点で探していたファイルは新しい場所にコピーされ、更新されず、次に.shが実行されたときにのみ置き換えられます。
アルゴリズムは次のようになります。
if (Log_29-08-2018.txt->readline() contain "18:30:29")
while (RESULT.txt->readline() not contain "20:30:29")
/MINI_LOG/Log_29-08-2018.txt->writeline()
Log_29-08-2018.txt->readline()
done
fi
/MINI_LOG/Log_29-08-2018.txt
そして、他の日以外では、次回実行するときにファイルを更新する必要があります。
毎日新しいソースファイルを受け取り、時間が重複しないようにします。
あなたの例を見てみましたが、まさに私は必要ではありませんでした。
ベストアンサー1
アッは素晴らしいツールです。コードが簡潔でパフォーマンスが良いです。 RUN.shは次のようになります
#!/bin/sh
awk -v start="$1" -v stop="$2" '
$3 ~ "^"start {p = 1}
$3 ~ "^"stop {p = 0}
p
' logfile > resultfile