- 论坛徽章:
- 0
|
原帖由 youshuang 于 2009-4-30 13:17 发表 ![]()
这里所有的方法我都试过了,
都不能很好的解决问题。
LZ给的例子的b.txt中恰好是134-135,如果是134-139呢?
这时候怎么把134-139先展开成134,135,136,137,138,139?
我给的方法中第一个awk就是展开的啊,不过测试了一下,发现数值相等的情况下没做处理,添加一个else if处理就行了。
- awk -F, '{for(i=1;i<=NF;i++) if($i~"-") for(j=substr($i,1,index($i,"-")-1); j<=substr($i,index($i,"-")+1); j++) print j; else print $i}' 2.txt | cat 1.txt - | sort -n | awk 'NR==1{min=max=$0;f=0;next}{if($0==max+1){max=$0;f=1;next}else if($0==max){next}else{if(f){printf min"-"max","; f=0; min=max=$0;}else{printf max","; min=max=$0}}}END{if(f)print min"-"max; else print max}'
复制代码 |
|