#! /bin/csh -f # Last edited on 2025-05-01 18:45:47 by stolfi # Reads a list of "cococ" features with counts (as from uniq -c). # Sorts them by number of round letters and contexts /bin/cat \ | gawk \ ' /./ { \ r=$2; gsub(/[aoy]/,"",r); gsub(/[X]*[M]+[X]*/,"@",r); gsub(/[X]+/,"@",r); gsub(/[^@RFD«»]/,"??",r); gsub(/[R«»]/,"",r); r=length(r); \ s=$2; gsub(/^[»].*$/,"",s); gsub(/[^RFD«»]/,"",s); s=length(s); \ t=$2; gsub(/^.*[«]$/,"",t); gsub(/[^RFD«»]/,"",t); t=length(t); \ u=$2; gsub(/[^aoy]/,"",u); u=length(u); \ printf "%02d %02d %02d %02d %s\n",r,s,t,u,$0; \ } \ ' \ | sort -b -k1n -k2n -k3n -k4n -k5nr \ | gawk \ ' BEGIN { r="*"; } \ /./ { \ if(($1!=r)||($2!=s)||($3!=t)||($4!=u)) \ { prt(); r=$1; s=$2; t=$3; u=$4; n=0; prh(); } \ print substr($0,13); \ n+=$5; \ } \ END { prt(); } \ function prt() \ { if(n>0) \ { printf "#------ ---------\n"; \ printf "#%6d TOTAL cores=%d pre=%d suf=%d tot=%d\n", n,r,s,t,u; \ printf "#\n"; \ } \ } \ function prh() \ { printf "#\n#=== cores=%d pre=%d suf=%d tot=%d ================\n", r,s,t,u; \ } \ '