Chinaunix
标题:
awk问题
[打印本页]
作者:
zhaolianghz
时间:
2016-05-11 16:30
标题:
awk问题
[root@shell ~]# awk 'BEGIN{for(i=1;i<=5;i++)print i}'
1
2
3
4
5
[root@shell ~]# awk 'BEGIN{for(i=1;i<=5;i++)print i;print i}'
1
2
3
4
5
6 为什么第二个print i 输出的是6
[root@shell ~]# awk 'BEGIN{for(i=1;i<=5;i++)print i;print i;print i}'
1
2
3
4
5
6
6 为什么第三个print i 输出的是6
[root@shell ~]# cat test5
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28
[root@shell ~]# awk '{if($6<$7){da=$7-$6;print $1,da};{print $7-$6,da}}' test5
M.Tansley 4
4 4
J.Lulu 2
2 2
-7 2
0 2
-2 2
为什么后面的print da 输出的 3 4 5 行的值是: 2 2 2
作者:
287380917
时间:
2016-05-11 16:49
本帖最后由 287380917 于 2016-05-11 16:51 编辑
awk 'BEGIN{for(i=1;i<=5;i++)print i;print i}'
2个print暂时叫做A和B吧
for循环一次执行一次A,for循环结束之后执行B,此时i就是6,后面再打印多少次他也是6,因为不循环了
for之后如果想要循环一次执行一组命令的话,请放到{}中。
awk 'BEGIN{for(i=1;i<=5;i++){print i;print i}}'
下面那个if也是一样的,if条件只对第一个command起作用,‘;’之后的部分每读一行记录都执行了
作者:
zhaolianghz
时间:
2016-05-11 16:57
回复
2#
287380917
谢谢
作者:
zhaolianghz
时间:
2016-05-11 17:37
回复
2#
287380917
还是有问题,为什么第二个print i 的i 的值是6,前面的是5,;后第二个print不是不参与循环了吗?为什么还会加1
作者:
jason680
时间:
2016-05-11 17:46
回复
4#
zhaolianghz
>> ...为什么第二个print i 的i 的值是6,前面的是5
不然你以为 i<=5,应该如何?
作者:
zhaolianghz
时间:
2016-05-11 17:51
回复
5#
jason680
你的意思就是跳出循环了,就需要i>5, 然后i就=6了?
作者:
lll1985911
时间:
2016-05-11 23:01
回复
6#
zhaolianghz
循环结束后i等于6,然后一直等于6,直到被再次赋值。
作者:
287380917
时间:
2016-05-12 09:32
回复
6#
zhaolianghz
i=5,判断i<=5成立,进入循环,执行A,执行i++,i=6了,判断i<=5不成立,结束循环,执行B。
循环就结束了,i的值也就固定在了6,直到再次被赋值否则就一直是6了
作者:
zhaolianghz
时间:
2016-05-12 11:02
回复
8#
287380917
非常感谢
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2