
awk '{for(;i++<NF;)a[$i]++;for(i in a)print i" = "a[i]}' urfile 求详细解释此语句的含义。
awk'{for(;i++<NF;)a[$i]++;for(iina)printi"="a[i]}'urfile求详细解释此语句的含义。...
awk '{for(;i++<NF;)a[$i]++;for(i in a)print i" = "a[i]}' urfile 求详细解释此语句的含义。
展开
1个回答
展开全部
首先awk是按行处理,告诉你一行是啥,后面的都是这么处理的。
for(;i++<NF;),循环次数,NF即该行的字段个数;a[$i]++,数组的形式(以字段为下标的数组),表示一个数值,因为有++
for(i in a),这个不用多说了吧,循环的一种格式,i为变量,a为数组名
print i" = "a[i],就是输出:数组里面的下表即urfile每行字段名称,该字段在该行出现的次数
举个栗子:
urfile仅仅一行,为:ab abc cd df ab cd,则执行这条awk语句的结果为:
ab=2
abc=1
cd=2
df=1
明白了吧初学awk的骚年?
追问
很满意你的回答,但是有一个地方没明白。最后打印a[i] 为什么就变成了出现的次数了呢
追答
数组a,以ab abc cd df ab cd为下标,即为:a[ab],a[abc] 。。。,a[ab]++——>得出a[ab]=1,因为初始化为0,这下懂了吧,研究下前置自增后置自增是什么意思,仔细看,多思考,我下班了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询