#!/usr/bin/env -S gawk -f# Usage: getAlignPos.awk <samFile# Get the start\end position of local alignment for marker\sequence# Input: samFile without header# Output: flag|marker|markerStart|markerEnd|seqStart|seqEndBEGIN{FS="\t"OFS="\t"}{if($6=="*"){print$2,$3,0,0,0,0}else{n=patsplit($6,cigarSegs,/[0-9]+[MIDNSHPX=]/)markerStart=$4-1# sam file is 1-based, so minus 1markerEnd=markerStartseqStart=0seqEnd=0for(i=1;i<=n;++i){patsplit(cigarSegs[i],num,/[0-9]+/,labels)if(labels[1]~/[MI=X]/||labels[1]~/[SH]/&&i==1){seqEnd+=num[1]if(labels[1]~/[SH]/&&i==1){seqStart+=num[1]}}if(labels[1]~/[MD=X]/){markerEnd+=num[1]}}print$2,$3,markerStart,markerEnd,seqStart,seqEnd}}