- 论坛徽章:
- 23
|
原帖由 jiangxue1327 于 2008-2-28 11:46 发表 ![]()
这句话看不懂,能详细解释下吗?
1、这个语句没有循环,但为什么会循环呢
2、a在开始并没有被赋予初始之
3、如果将str=(3 4 5 6 7 8 11 20 21 22 23 45 46 47 ),那跑出的结果是:
2 9
19 24
最后一段就 ...
修改了下:
- #!/bin/bash
- str=(3 4 5 6 7 8 11 20 21 22 23 45 46 47 )
- echo ${str[@]} | tr ' ' '\n' | awk '{if($1==b)a++;else{if(NR>1&&a>0)print b-a-2,b;a=0}}{b=$1+1}END{if(a>0)print b-a-2,b}'
复制代码
echo ${str[@]} | tr ' ' '\n' 会将数组中的所有值打印出来,一个值一行。
awk 是一行一行读数据的,所以就相当于循环了。在awk中使用变量是不用赋初值的,数值是0,字符是''。
awk 这句的思路就是一行一行的读数据,判断下一行的数据和上一行是不是连续的,是就继续读,不是就打印。 |
|