- 论坛徽章:
- 145
|
awk only
$ awk 'function p(v){if(s=="-")printf("%s%s",s,D2 D3);printf("%s",v);D1=d[1];D2=d[2];D3=d[3]}{match($2,/([^0-9]+)([0-9]+)/,d);a[sprintf("%-15s%-15s%9d",$1,d[1],d[2])]=$0}END{t=asorti(a,b);for(n=1;n<=t;n++){split(b[n],d," +");if(d[1]!=D1){p(N d[1]": "d[2]d[3]);N="\n";s=",";continue};if(d[2]!=D2){p(","d[2]d[3]);continue};if(d[3]==D3+1){s="-";D3=d[3]}else{p(","d[2]d[3]);s=","}}}END{p("\n")}' FILE
apple: cat12,cat106-cat109,cat123,cat125
pear: dog11,dog101,dog103-dog105,mouse106-mouse109,mouse123,mouse125
|
|