awk语句#awk '{for(i=1;i<=NF;i++)a[$i]++;for(i in a)print i" = "a[i]}' tongji.txt

这个语句用户统计每个字段出现的次数,前面for(i=1;i<=NF;i++)是循环次数,请问这个语句的循环体在哪里,后面那个for(iina)也参与前面的循环吗?... 这个语句用户统计每个字段出现的次数,前面for(i=1;i<=NF;i++)是循环次数, 请问这个语句的循环体在哪里,后面那个for(i in a)也参与前面的循环吗? 展开
 我来答
albumin
2014-09-18 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2400万
展开全部
{for(i=1;i<=NF;i++)a[$i]++;
NF表示单行(记录 )中字段 数,$i表示对应字段 ,假设 文本是 "a b c d a b a" ,a出现3次所以a[a]++执行了3次,a[a]的值增加了3,这个循环完成 后a数组 中为已经读取的行相同内容字段出现次数

for (i in a) 表示 依次迭代a数组 的下标 ,赋值给变量 i,如上例a数组的下标 会是a,b,c,d(顺序是随机的),这四个下标会被按随机顺序赋值给变量 i。
print i"="a[i],打印字段 i和其出现次数a[i]
这样写每读取一行都 会打印 一次已经 重复出现过的字段 统计,为什不只打印 最终 统计呢,像下面这样

awk '{for(i=1;i<=NF;i++)a[$i]++;} END {for(i in a)print i" = "a[i]}' tongji.txt
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式