我有一个文件,其中包含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
第二个值始终是唯一的,表示一个位置并进行排序,因此为什么序列会分散。
每次序列开始时,我都想获取该序列的最小值和最大值。输出应为(seq min max)
seq1 2 10
seq3 15 60
seq2 100 200
seq3 210 300
seq1 310 400
是否可以通过awk或其他方式在bash中执行此操作?
答案 0 :(得分:3)
您可以使用此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 :(得分:1)
另一个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
$