Chinaunix

标题: awk 数组问题 [打印本页]

作者: wtuter    时间: 2008-05-15 11:39
标题: awk 数组问题
本帖最后由 wtuter 于 2010-02-05 11:43 编辑

[root@ study]# awk '{ a[NR]=$0;print a[2]}' test

linlf      man        china guangdong
linlf      man        china guangdong
linlf      man        china guangdong
linlf      man        china guangdong
[root@ study]# awk '{ a[NR]=$0;print a[1]}' test
name   sex         address
name   sex         address
name   sex         address
name   sex         address
name   sex         address
[root@ study]#

上面怎么会出现五次呢?还有我想输出a数组的所有内容怎么用呢?请高手指点一二,谢谢!
作者: davistar    时间: 2008-05-15 11:46
把输出放到END里面去
作者: err7dd    时间: 2008-05-15 11:47
标题: 回复 #1 wtuter 的帖子
awk 逐行读入文本,print a[1] 执行了5次,当然显示5行
awk '{a[NR]=$0} END{for (i in a) print a }'
作者: nogroup    时间: 2008-05-15 11:52
顺道问一下,如何知道awk数组长度呢?
作者: davistar    时间: 2008-05-15 11:57
原帖由 nogroup 于 2008-5-15 11:52 发表
顺道问一下,如何知道awk数组长度呢?

length函数
作者: nogroup    时间: 2008-05-15 12:00
原帖由 davistar 于 2008-5-15 11:57 发表

length函数


这样得到的是域的长度吧,我想知道awk中数组的元素个数.
作者: davistar    时间: 2008-05-15 12:09

  1. awk 'BEGIN{for(i=1;i<=100;i++)a[i]=i;print length(a)}'
  2. 100
复制代码

作者: nogroup    时间: 2008-05-15 12:26
标题: 回复 #7 davistar 的帖子
感谢.

作者: wtuter    时间: 2008-05-15 13:01
标题: awk 'BEGIN{for(i=1;i<=100;i++)a[i]=i;print length(a)}'
本帖最后由 wtuter 于 2010-02-05 11:44 编辑

[root@ study]# awk 'BEGIN{for(i=1;i<=100;i++)a=i;print length(a)}'
awk: cmd. line:1: fatal: attempt to use array `a' in a scalar context


我在我的机子上面做试验怎么会出错呢?

作者: jinl    时间: 2008-05-15 13:42
你的awk什么版本?
作者: jovelva    时间: 2010-02-03 13:54
[root@mjmonitor01 study]# awk 'BEGIN{for(i=1;i
wtuter 发表于 2008-05-15 13:01



    你命令写错了,怎么直接a=i了




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