範囲リスト(〜から)を圧縮したいです。

範囲リスト(〜から)を圧縮したいです。

次の形式の範囲に割り当てられたコードに関連するデータがあります。

From   To     Code
0      5      A
5      10     A
10     15     A
15     20     B
20     25     B
25     30     A
30     35     A
35     40     A
40     45     C
45     50     C
50     55     C
55     60     B
60     65     B
65     70     B

このリストを次のリストに圧縮したいと思います。

From   To     Code
0      15     A
15     25     B
25     40     A
40     55     C
55     70     B

同じコード(たとえば、0-5、5-10、10-15)を含む連続範囲はマージされます。sedorでこれを行うことができるかどうか疑問に思いますawk

ベストアンサー1

これは簡単にできますawk

awk '
    NR==1{
        print
        next }
    f!=$3{
        if(NR!=2)
            print(line)
        printf("%s\t",$1)
        f=$3 }
    {
        line=$2 "\t" $3 }
    END{
        print line }
' 

おすすめ記事