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 求详细解释此语句的含义。 展开
 我来答
sunny521131421
2013-10-16 · TA获得超过202个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:137万
展开全部
  1. 首先awk是按行处理,告诉你一行是啥,后面的都是这么处理的。

  2. for(;i++<NF;),循环次数,NF即该行的字段个数;a[$i]++,数组的形式(以字段为下标的数组),表示一个数值,因为有++

  3. for(i in a),这个不用多说了吧,循环的一种格式,i为变量,a为数组名

  4. 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,这下懂了吧,研究下前置自增后置自增是什么意思,仔细看,多思考,我下班了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式