2016-03-23 6 views
0

awkを使用して、3つの分割がスペースで区切られたファイルを分割しています。 2.終了点。 3.ラベルラベルのタイムスタンプを間隔でbashで

定義済みのフレーム内に新しいラベルを作成したい場合は、ifがちょっと残っています。

私はこのような何かを探しています:2つのラベルが同じ間隔の範囲内にある場合、最初の1を取る

num_intervals == (tail -1 | ending point)/250000 
count == 1 
interval == 2500000 
current_interval_start == 0 
current_interval_end == current_interval_start + interval 
for interval in num_intervals 
    if starting_point >= current_interval_start and if ending_point <= current_interval_end then 
     print count + label 
     count == count + 1 
     current_interval_start == current_interval_end 
     current_interval_end == current_interval_start + interval 

*観測が、私は、プロセスにこれを投稿できます。

私のデータは次のようになります。

0 2300000 null 
2300000 4300000 h 
4300000 8000000 aa 
8000000 11500000 t 
11500000 28400001 null 

出力はこのことだろうと私は希望の何か:

あなたが唯一のawkで行うことができます
0 2500000 null 
2500000 5000000 h 
5000000 7500000 aa 
7500000 1000000 aa 
1000000 1250000 t 
1250000 1500000 null 
1500000 1750000 null 
1750000 2000000 null 
2000000 2250000 null 
2500000 2750000 null 
2750000 3000000 null 
+0

あなたがしたいです現在のすべての数値を最も近い数値に丸めて「2500000」で割り切れば、各範囲をそのサイズの単位にチャンクアップできますか? –

答えて

1

awk -v s=2500000 '{ 
    f=int($1/s); 
    l=int($2/s); 
    if((l-f) > 0){ 
     for(i=f+1;i<=l;i++){ 
       a[i]=$3 
     } 
    } 
} 
END { 
    e=int($2/s); 
    for (i=0;i<=e;i++){ 
     if (i in a){ 
       print i*s,(i+1)*s,a[i] 
     } 
     else{ 
       print i*s,(i+1)*s,"null" 
     } 
    } 
}' 
+0

それはstellerです!それが何をしているのかを正確に理解するために少し遊んだが、まさに私がやろうとしていたものだった!ありがとう! – badner

関連する問題