- 论坛徽章:
- 0
|
我自己写了一个,哪位高手有更好的解决办法
源文件:
- 63 63
- 74 74
- 82 82
- 95 95
- 96 96
- 99 99
- 97 97
- 98 98
- 100 100
- 114 114
- 123 123
- 135 135
复制代码 目的:在源文件中,每行有两列,两列数值相同,行与行之间有的增量为1,有的增量不为1,如第4行与第
5行增量为1,增量为1的行也可能不是紧邻连续着的,如第5行与第7行增量为1,但是不相邻连续的。想把一个几百万行的
文件中增量为1的行进行压缩,比如95到100之间增量都为1,压缩成95 100 第一列放连续递增中起始值,第二列放连续增
量结束值。- 63 63
- 74 74
- 82 82
- 95 100
- 114 114
- 123 123
- 135 135
复制代码 {:3_205:}
我的 :- awk 'BEGIN {
- SROW=2
- EROW=1540
- STARTR=0
- ENDR=0
- DELTA=0
- }
- {
- if(NR==SROW){
- STARTR=$3
- ENDR=$4
- }
- if(NR>SROW){
- DELTA=$3-ENDR
- if((DELTA==1)||(DELTA==0)) ENDR=$3
- if(DELTA>1){
- temp=$3
- $3=STARTR
- $4=ENDR
- printf "%s\n",$0
- STARTR=temp
- ENDR=STARTR
- }
- }
- if(NR==EROW){
- $3=STARTR
- printf "%s\n",$0
- }
- }'
复制代码 |
|