У меня есть файл, часть которого я выкладываю вам ниже после сортировки:
area1 38896 39876
area1 39532 40521
area1 55975 56958
area1 73070 74098
area1 79689 79934
area2 43757 46798
area2 44055 47111
area2 54208 54354
area2 57000 59336
area2 69391 72882
area3 49621 50967
area3 49946 51322
area3 53044 53505
area3 65205 66473
area3 66888 68294
Моя цель - получить один интервал из этих областей, вычтя последний набор координат минус первый, для каждой области. По определению, внутренняя часть 2-х точек в декартовой системе равна d= sqrt( (X2 –x1)^2 +(y2 –y1)^2 )
Первоначально я пытался найти решение с помощью bedtool, но не нашел ничего, связанного с моим случаем.
Мой желаемый вывод:
d area1 =sqrt{ (79689 -38896) ^2 + (79934-39876) ^2}
d area2 =sqrt{ (69391-43757 ) ^2 + (72882-46798)^2}
et c
Я пишу это приглашение:
Cat myfile | sort -k1,1 -k2,2n |sort -V |awk 'NR %5==1 {print $1,$2,$3 } NR%5==0 {print $1,$2,$3}'|awk {for (i=2; i<=$i ;i++) {a[i]=sqrt((p[i]*p[i])+($i*$1))} } { for(i=2; i<=$i ;i++) {p[i]=$i;} } /[0-9]/{ for (i in a) {printf "%s ",a[i]};print "";print "" }
Но я не смог сделать то, что хочу. У кого-нибудь есть идеи, как с этим справиться?