次の形式の範囲に割り当てられたコードに関連するデータがあります。
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)を含む連続範囲はマージされます。sed
orでこれを行うことができるかどうか疑問に思います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 }
'