问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于awk语法问题

发布网友 发布时间:2022-04-26 20:58

我来回答

1个回答

热心网友 时间:2023-11-01 13:30

a被开成了一个数组,第一列有多少不同的值,a就有多少个元素,元素的个数是随着一行行处理下来动态增长的,a[$1]就是说“如果已经有这个串,a[$1]就不是缺省的初始值0,如果没有,就相当于增加一个元素,其初始值是0”,在这个逻辑中,自动地实现了按照第一列分组的意图。

awk脚本的大致框架如下:
BEGIN {...}——开始处理前,做些准备工作
{...}——花括号中的是处理语句,每读取一行文本,就处理一趟。
END {...}——所有的行都处理后,最终来一趟处理,一般的统计工作常在这里进行

NF是当前行的列数,列是按照某分隔串将行拆解出来的,缺省的分隔符是TAB和空格;$NF就是该行的最后一列;
arr同样是开数组,++是递增数值,++x相当于x=x+1;一行行的++arr[$NF]进行下来,逻辑就是按照各行的最后一列分组统计,最后的END逻辑就是输出不同的最后一列,以及出现的频度。

以上为鱼,建议你找一本叫做“Effective Awk Programming, 3rd Edition”的书看看,掌握渔技。追问我真的很感谢你这么详细的回答、我收获不小、但是还有一定没有明白、第一个例子里、a[$1]=a[$1]+$2、那a[$1]这时候的值是多少、还有如果第一列相同、第二列是在那个地方加起来的、最好一句一句的说、把中间每一步的值也说出来、我知道我的问题很叼怪、但是非常感谢、、、、

追答任何数值型变量缺省值都是0,数组也不例外。
a[$1]=a[$1]+$2的分解动作:
1、看看有没有a数组,没有就创建一个
2、看看a数组中有没有$1(当前行的第一列)的元素,没有就创建一个,发现后面正在进行+操作,则认定它是个数值型,于是设定初始值为0
3、如果有$1,取出当前值(当第一列首次出现时为0,否则应该已经是个累加值),加上$2的数儿

热心网友 时间:2023-11-01 13:30

a被开成了一个数组,第一列有多少不同的值,a就有多少个元素,元素的个数是随着一行行处理下来动态增长的,a[$1]就是说“如果已经有这个串,a[$1]就不是缺省的初始值0,如果没有,就相当于增加一个元素,其初始值是0”,在这个逻辑中,自动地实现了按照第一列分组的意图。

awk脚本的大致框架如下:
BEGIN {...}——开始处理前,做些准备工作
{...}——花括号中的是处理语句,每读取一行文本,就处理一趟。
END {...}——所有的行都处理后,最终来一趟处理,一般的统计工作常在这里进行

NF是当前行的列数,列是按照某分隔串将行拆解出来的,缺省的分隔符是TAB和空格;$NF就是该行的最后一列;
arr同样是开数组,++是递增数值,++x相当于x=x+1;一行行的++arr[$NF]进行下来,逻辑就是按照各行的最后一列分组统计,最后的END逻辑就是输出不同的最后一列,以及出现的频度。

以上为鱼,建议你找一本叫做“Effective Awk Programming, 3rd Edition”的书看看,掌握渔技。追问我真的很感谢你这么详细的回答、我收获不小、但是还有一定没有明白、第一个例子里、a[$1]=a[$1]+$2、那a[$1]这时候的值是多少、还有如果第一列相同、第二列是在那个地方加起来的、最好一句一句的说、把中间每一步的值也说出来、我知道我的问题很叼怪、但是非常感谢、、、、

追答任何数值型变量缺省值都是0,数组也不例外。
a[$1]=a[$1]+$2的分解动作:
1、看看有没有a数组,没有就创建一个
2、看看a数组中有没有$1(当前行的第一列)的元素,没有就创建一个,发现后面正在进行+操作,则认定它是个数值型,于是设定初始值为0
3、如果有$1,取出当前值(当第一列首次出现时为0,否则应该已经是个累加值),加上$2的数儿

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 一个刚移名美国未入籍的中国人,能与 中国人结婚吗? 深圳营运车辆能不能跑哈罗顺风车? 艾诺迪亚3 16格背包和BOSS卷怎么修改呀,用八神我补会,交交我,谢谢, 艾诺迪亚3 用八门神器修改问题! 给下《吸血鬼骑士》里的歌曲名 深圳、东莞哈啰顺风车要办理营证吗? soundmax integrated digital hd audio 江苏徐州过年的风俗习惯 156.8+205.9 艾诺迪亚3怎么改觉醒的徽章 江苏过年的风俗有哪些? _百度问一问 哪位大神教我怎么做艾诺迪亚3的装备? 深圳B牌照在深圳市内跑哈喽顺风车算违法么? 徐州春节习俗? excel 里怎样给多个单元格加同一个数字 江苏徐州的风俗有什么 艾诺迪亚3加技能点的卷抽叫什么,就是点一下多一个技能点,代码是多少 查询湘j62272违章 闽G62272车主是谁? 春节是我国的传统节日里最隆重的一个节日,请你说一说家乡过春节的几个有趣的习俗 徐州春节期间哪里好玩?徐州春节期间有什么大型活动吗 你好,我用我老公的名字实名制的支付宝账号,可以更改成我自己的吗? 一些减肥人士选择少吃多餐,这个吃法有什么依据? 三伏天怎样吃海鲜,这个吃法只需4步,老人小孩都爱吃 支付宝账号现在都是实名制了。怎么才能把自己的名字改成一个自己的网... 还有这吃法,青辣椒包肉,怎么做的呢? 支付宝的实名认证可以变更名字么? 这个怎么吃法? 这个怎么吃 支付宝帐号实名认证之后可以改名字吗?想注销一直都提示有笔交易未完成,但是能不能该名字呢? 腾达路由器下面的设备访问过的网页 谁知道这个怎么个吃法? 腾达路由器的远程web管理如何使用 端口和ip设置为远程电脑后 在远程电脑上通过什么地址访问? 辣木籽的正确吃法是什么? 腾达路由器访问不了是怎么回事? 这个是什么?怎么吃法? 设置腾达无线路由器,提示“无因特网访问,请检查您的上网设置!”? 电脑打开浏览器出现腾达路由器无法访问互联网,请检查你的上网设置 腾达路由器设置无英特网访问怎么处理