определить минимальное и максимальное значения перекрывающихся диапазонов из нескольких совпадений - PullRequest
0 голосов
/ 08 октября 2019

Учитывая следующий файл списка с разделителями табуляции в трех столбцах, где значение 1 и значение 2 в каждой строке представляют диапазон в данном совпадении, какой простейший сценарий / команда оболочки определит все перекрывающиеся диапазоны для каждого совпадения и определитминимальное и максимальное значение для всего перекрытия? Для данного соответствия наименьшее значение всегда находится в первом столбце диапазона. Однако в пределах соответствия значения в столбцах не обязательно сортируются.

infile.txt:

match1 857 1107
match1 879 1128
match1 969 1126
match1 865 1115
match1 1296 1546
match1 1304 1554
match1 1318 1600
match1 1408 1562
match2 300 1100
match2 639 1225
match2 4299 6546
match2 5304 7754

outfile.txt:

match1 857 1128
match1 1296 1600
match2 300 1225
match2 4299 7754

1 Ответ

0 голосов
/ 09 октября 2019

Какова самая простая сценарий / команда оболочки, которая будет определять все перекрывающиеся диапазоны для каждого совпадения и определять минимальное и максимальное значение для всего перекрытия?

Можно ли утверждать, что это - это самый простой сценарий оболочки , чтобы сделать это, но каждое решение, вероятно, должно будет отсортировать диапазоны и идентифицировать пробелы, как это делает:

while read match min max
do  printf %s\\n $match\ {$min..$max}
done <infile.txt | sort -u -k1,1 -k2n |
while read match value
do  if [ $match != "$oldmatch" -o $value != $((oldvalue+1)) ]
    then    [ "$oldmatch" ] && echo $oldvalue
            printf %s\\t $match $value
    fi
    oldmatch=$match
    oldvalue=$value
done
echo $oldvalue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...