- 论坛徽章:
- 5
|
本帖最后由 klainogn 于 2014-05-24 20:21 编辑
我也来一个,只是排序上不太理想:
- lion@Lion:~$ cat test.awk
- {
- a[$1]=a[$1]?a[$1]SUBSEP$2:$2
- }
- END{
- for(i in a){
- delete c
- string=""
- split(a[i], b, SUBSEP)
- for(j=0; j++<asort(b); ){
- match(b[j], /^(.*[^0-9])([0-9]+)$/, kv)
- string=(kv[2]==last[kv[1]]+1)?string"-"kv[2]:string","b[j]
- last[kv[1]]=kv[2]
- }
- sub(/^,/,"",string)
- while(gsub(/-[0-9]+-/,"-", string)){}
- print i":\t"string
- }
- }
- lion@Lion:~$ awk -f test.awk test
- apple cat106-109,cat12,cat123,cat125
- pear mouse106-109,mouse123,mouse125,dog101,dog103-105,dog11
复制代码 |
|