首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环数组问题

循环数组问题
EN

Stack Overflow用户
提问于 2011-07-13 16:49:53
回答 2查看 77关注 0票数 0

我很难弄清楚如何遍历一个简单的数组。我有this text file,基本上我的目标是选择所有以数字和a开头的行(在英语中相当于1,2,3,4等等),并为它们分配适当的分数。所以我写了下面的代码:

代码语言:javascript
复制
#!/usr/bin/awk -f
BEGIN{FS="\t"}
/[0-9]+a/ {for (i=1; i<NR; i++) { score[i]=$3 } for (i=1; i<NR; i++) {print i, score[i]}}

这是我得到的疯狂的输出:

代码语言:javascript
复制
1 25
1 20
2 20
1 16
2 16
3 16
1 13
2 13
3 13
4 13
1 11
2 11
3 11
4 11
5 11
1 10
2 10
3 10
4 10
5 10
6 10
1 9
2 9
3 9
4 9
5 9
6 9
7 9
1 8
2 8
3 8
4 8
5 8
6 8
7 8
8 8
1 7
2 7
3 7
4 7
5 7
6 7
7 7
8 7
9 7
1 6
2 6
3 6
4 6
5 6
6 6
7 6
8 6
9 6
10 6
1 5
2 5
3 5
4 5
5 5
6 5
7 5
8 5
9 5
10 5
11 5
1 4
2 4
3 4
4 4
5 4
6 4
7 4
8 4
9 4
10 4
11 4
12 4
1 3
2 3
3 3
4 3
5 3
6 3
7 3
8 3
9 3
10 3
11 3
12 3
13 3
1 2
2 2
3 2
4 2
5 2
6 2
7 2
8 2
9 2
10 2
11 2
12 2
13 2
14 2
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 1
12 1
13 1
14 1
15 1

我不明白这怎么可能。你能帮我一下吗?

EN

回答 2

Stack Overflow用户

发布于 2011-07-13 17:53:12

虽然awk数组相当于散列,但是向它们提供数据是没有问题的;您只需要:

代码语言:javascript
复制
/[0-9]+a/{scores[$1]=$2}

以及scores['1a']=25scores['3a']=16等。

您可以使用for-in循环遍历它:

代码语言:javascript
复制
/END/{for(e in scores) print(e,scores[e])}
票数 1
EN

Stack Overflow用户

发布于 2011-07-13 17:34:34

为此,您不需要一个数组:

代码语言:javascript
复制
awk '/^[0-9]a/' YOURINPUT 
1a      25
2a      20
3a      16
4a      13
5a      11
6a      10
7a      9
8a      8
9a      7
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6676385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档