2016-07-12 12 views
0

私はファイルを持っているとの間にあるかどうかをチェック形式以下の最初の列はタイムスタンプであり、第二は、数あるawkは:数は二つの数字

02 Jul 2016 00:00:00 2736359 
02 Jul 2016 00:02:00 2736594 
02 Jul 2016 00:04:00 2736828 
02 Jul 2016 00:06:00 2737068 
02 Jul 2016 00:08:00 2737303 
02 Jul 2016 00:10:00 2737542 
02 Jul 2016 00:12:00 2737775 
02 Jul 2016 00:14:00 2738011 
02 Jul 2016 00:16:00 2738251 
02 Jul 2016 00:18:00 2738483 

。 2737778の入力があると、出力は「27 Jul 2016 00:12:00と02 Jul 2016 00:14:00」になります.2737778は2737775と2738011の間に入ります。これをawkで行うことはできますか?現在の行の番号と次の行の番号を比較することはできますか?

答えて

1

はい、awkで先読みすることができます。Peek at next line, but don't consume itを参照してください。それを行う別の方法があります。

awk '{ if (NR == 1) { save = $0; prtsw = 1 } 
     else if (prtsw == 1 && 2737778 < $5) { 
       print save 
       print $0 
       prtsw = 0 
      } 
      else { save = $0 } 
    }' abetween.txt 
2

役立ちます別の類似awk

awk -v n=2737778 'n<=$NF{if(p) print p; print; exit} {p=$0}' file 

02 Jul 2016 00:12:00 2737775 
02 Jul 2016 00:14:00 2738011 
+0

感謝。しかし問題は、数字が増加する順番で1週間後にリセットされることです。だから、コーナーケースがあるのではないかと心配しています。 <=をチェックするのではなく、番号が間に入っているかどうかを調べることはできますか? –

+1

これは、ファイルがソートされている限り、スクリプトが行うこととまったく同じです。コーナーケースをテストします。そのうち2つがあります。 – karakfa