Chinaunix

标题: 不能打印数组 [打印本页]

作者: sunzhiguolu    时间: 2016-03-28 14:05
标题: 不能打印数组
本帖最后由 sunzhiguolu 于 2016-03-28 14:06 编辑
  1. awk "BEGIN{for (i=0;i<5;i++){a[i]=i}}"
复制代码
请问如何打印数组的内容.
  1. awk "BEGIN{for (i=0;i<5;i++){a[i]=i}}END{for (n in a){print n,a[n]}}"
复制代码
没有结果, 不知道原因.
作者: Shell_HAT    时间: 2016-03-28 14:17
  1. echo "" | awk 'BEGIN{for (i=0;i<5;i++){a[i]=i}}END{for (n in a){print n,a[n]}}'
复制代码

作者: sunzhiguolu    时间: 2016-03-28 14:19
回复 2# Shell_HAT
果然奏效, 大神能给出原因吗. 谢谢...

   
作者: sunzhiguolu    时间: 2016-03-28 14:29
谁能说下 awk 为什么不能打印结果, 而添加了 echo 命令后就可以了.
作者: 关阴月飞    时间: 2016-03-28 14:34
回复 4# sunzhiguolu


    awk 在等待你的输入
作者: Shell_HAT    时间: 2016-03-28 14:36
回复 4# sunzhiguolu


BEGIN语句在处理文本之前执行

END语句在处理文本之后执行

Finally, after all the input is exhausted, gawk executes the code in the END block(s) (if any).
作者: sunzhiguolu    时间: 2016-03-28 14:39
回复 5# 关阴月飞
多谢大神, 输入 Enter + <C-z> 就有结果了, 非常感谢.

   
作者: sunzhiguolu    时间: 2016-03-28 14:47
回复 6# Shell_HAT
多谢大神注解, 谢谢...

   
作者: sunzhiguolu    时间: 2016-03-28 15:06
比较了一下各种输出结果:
1.> awk 'BEGIN{for (i=0;i<5;i++){a[i]=i}}END{for (n in a){print n,a[n]}}' 等待所有输入结束后, 才执行 END 块
2.> awk 'BEGIN{for (i=0;i<5;i++){a[i]=i}}{for (n in a){print n,a[n]}}' 执行一次输入 + <Enter> 都会执行一次 {a[i]=i}}{for (n in a){print n,a[n]}} 块
有错误, 漏掉的地方请大家指正,,,

作者: 我是一隻羊    时间: 2016-03-28 15:20
  1. awk "BEGIN{for (i=0;i<5;i++){a[i]=i};for (n in a){print n,a[n]}}"
复制代码
为什么要用END~都放BEGIN里不就行啦~
作者: sunzhiguolu    时间: 2016-03-28 15:43
回复 10# 我是一隻羊
BEGIN{xxx} 块, 原来是读取任何输入之前执行的, 非常感谢...

   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2