2016-08-31 11 views
0

私は以下のような入力ファイルを持っています。bashのループ反復との時間差を取得する

975700 18:32:32.956 
975700 18:32:32.971 
975700 18:32:33.018 
975701 18:32:32.987 
975702 18:32:32.987 
975702 18:32:33.003 
975702 18:32:33.034 

私は同じID番号の時差を取っておきたいと思います。これまでのところ、私は以下のコードを思い付くことができます。

while read jobnum time 
do 
    if [[ "$prevjobnum" != "$jobnum" ]] && [[ `grep $jobnum $joblst|wc -l` -eq 1 ]] 
    then 
     echo "$jobnum incomplete log" 
    elif [[ "$prevjobnum" == "$jobnum" ]] 
    then 
     ENDTIME=`date +%s.%N -d "$time"` 
     STARTTIME=`date +%s.%N -d "$prevtime"` 
     DIFF=$(echo $ENDTIME - $STARTTIME | bc | sed 's/0\{1,\}$//') 

     echo "$jobnum clip time is $DIFF seconds" 
    else 
     : 
    fi 

ただし、IDの1つと2つのインスタンスでのみ動作します。私はまた、IDの最初と最後のインスタンスが以下のように2つ以上の場合に差をつけることができるようにしたいと思います。

975700 18:32:32.956 
975700 18:32:32.971 
975700 18:32:33.018 

次のような出力を得たいですか。

975700 clip time is .062 seconds 
975701 incomplete log 
975702 clip time is .047 seconds 
+0

、//39240688/1983854)。あなたはまだそれが何かであり、それを提供しなかった答えを受け入れたと言った、望ましい出力を見逃しています。この投稿を編集してください。 – fedorqui

+0

@Inian希望のo/pを含む質問を編集しました – Dren

+0

@fedorqui以前の質問に既に回答していて、新しいスレッドで別の質問をしなければならないというフィードバックがあったので、別の質問を投稿します。 – Dren

答えて

1

次のスクリプトは良い出発点かもしれません://:私は、これは[あなたの前の質問](HTTPの継続で見る

#!/bin/bash 

while read jobnum time 
do 
    # first line 
    if [[ -z $prevjobnum ]]; then 
    prevjobnum=$jobnum 
    starttime=$time 
    lasttime=$time 
    continue 
    fi 

    if [[ $prevjobnum == $jobnum ]]; then 
    lasttime=$time 
    else 

    if [[ $starttime == $lasttime ]]; then 
     echo "$prevjobnum incomplete log" 
    else 
     echo "$prevjobnum $starttime $lasttime" 
     : 
    fi 

    prevjobnum=$jobnum 
    starttime=$time 
    lasttime=$time 
    fi 

done 

if [[ $starttime == $lasttime ]]; then 
    echo "$prevjobnum incomplete log" 
else 
    echo "$prevjobnum $starttime $lasttime" 
fi 

出力

975700 18:32:32.956 18:32:33.018 
975701 incomplete log 
975702 18:32:32.987 18:32:33.034 
+0

あなたのコード推薦に時間計算を組み込んだ後、それは私が望むのと同じように機能しました。どうもありがとう。 – Dren

関連する問題