Возьмите первый и последний элемент для каждой последовательности - PullRequest
1 голос
/ 29 мая 2019

У меня есть файл с 3 типами последовательностей и их позициями, которые повторяются так:

seq1 2
seq1 5
seq1 10
seq3 15
seq3 34
seq3 60
seq2 100
seq2 110
seq2 200
seq3 210
seq3 250
seq3 300
seq1 310
seq1 330
seq1 400

Второе значение всегда уникально, оно обозначает позицию и сортируется, поэтому последовательности разбросаны.

Каждый раз, когда начинается последовательность, я хочу получить минимум и максимум этой последовательности. Вывод должен быть (сек мин максимум)

seq1 2 10
seq3 15 60
seq2 100 200
seq3 210 300
seq1 310 400

Возможно ли сделать это в bash с помощью awk или чего-нибудь еще?

Ответы [ 2 ]

3 голосов
/ 29 мая 2019

Вы можете использовать это awk:

awk 'p != $1 {if (NR>1) print p, first, last; first=$2} {p=$1; last=$2} 
END{print p, first, last}' file

seq1 2 10
seq3 15 60
seq2 100 200
seq3 210 300
seq1 310 400
1 голос
/ 29 мая 2019

Еще один awk

$ awk ' { if(NR>1 && p!=$1) { print p,min,max; max=min=""} min=min?min:$2; max=$2; p=$1 } 
END { print p,min,max } ' adrian.txt
seq1 2 10
seq3 15 60
seq2 100 200
seq3 210 300
seq1 310 400

$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...