同じファイルの2行間の違いを見つける

同じファイルの2行間の違いを見つける

このようなファイルがありますが、

19:36:19_19/06/2017 1786
19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613
19:44:28_19/06/2017 2613
19:46:32_19/06/2017 2613
19:48:33_19/06/2017 2613
19:50:35_19/06/2017 2613

最大6827行。

行4と行1(時間ではなくデータのみ)の違いを見つけたいです。 100より大きい場合は最初の4行を印刷し、そうでない場合は行5を行2と比較して最大6000行を比較します。

次に、4行から1行のデータは(1786-2613) > 100最初の4行(タイミングを含む)を印刷します。次に、5行から2行を比較し続け、(2138-2613) > 1002行、3行、4行、5行を印刷します。今回も最大6000行まで比較したいと思います。

私はこのような出力が欲しい。

19:36:19_19/06/2017 1786
19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613



19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613
19:44:28_19/06/2017 2613

ベストアンサー1

最後の4つのキーと値のペアの配列を保持し、モジュラー算術を使用してこれを繰り返すことができます。

awk '{
  v[(NR-1)%4] = $0; k[(NR-1)%4] = $2
}
NR > 3 {
  if ($2 - k[NR%4] > 100) {
    for (i=NR;i<NR+4;i++) print v[i%4]; print ""
  }
}' file 
19:36:19_19/06/2017 1786
19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613

19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613
19:44:28_19/06/2017 2613

おすすめ記事