快速学习awk编程(四)
处理多行记录
假设相同的数据保存在块格式的文件中。不是将所有的信息放在一行,而是将姓名放一行,下一行放电话,以此类推。记录之间用空行分隔。下面是一个记录样本:
为处理这种多行数据的记录,可以将字段分隔符 定义 为换行符 (" "),记录分隔符设置为空字符串,代表一个空行。
例子1:我们使用如下命令实现按行输出数据
awk "BEGIN { FS = " " ; RS = ""}{print $1":"$2":"$3}" blockdata.txt
修改OFS变量 ,设置输出字段分隔符为" | "
awk "BEGIN { FS = " " ; RS = "" ; OFS = " | "}{print $1,$2 ,$3}" blockdata.txt
例子2:来实现一个excle擅长的工作。文件内容如下:
第一行 为现金总额
从第二行开始 为消费记录,第一字段是编号,第二字段是消费场所,第三字段是消费金额(负数)。
求现金余额。
代码如下:
BEGIN { FS = " " }
#输出第一行现金总额
NR ==1 { print "My Balance : "$1
balance = $1
}
NR > 1{
print $1,$2,$3
#ewbalance = balance
if(NR>1){
balance = balance + $3
print balance
}
}
END { print balance
}
执行结果:
关系操作符和布尔操作符
关系操作符和布尔操作符用于两个表达式之间 进行比较 。
操作符
描述
<
小于
>
大于
<=
小于或等于
>=
大于或等于
==
相等的
!=
不????等的
~
匹配
!~
不匹配
关系表达式可用在模式中来控制特殊操作。在上一个例子(例子2)中,使用了"NR==1"来控制只处理第一行,使用了"NR>1"来控制处理第一行之后的行。
如果是正则表达式,则通常使用"/"包围起来。例如:/^$/ {...} 正则匹配到空行进行处理。
当使用关系操作符 或! 时,右边的表达式可以是awk中的任意表达式;awk将它作为一个字符串并用来指定一个正则表达式。
例如:$1 /MA/ { print $1,$6} 第一个字段匹配MA
因为所有的表达式斗鱼 和! 一起使用,因此正则表达式可以用变量提供。
输出结果为包含行内包含ma的行号
布尔操作符由3个,如下:
操作符
描述
||
逻辑或
&&
逻辑与
!
逻辑非
给定2个或多个表达式,只有当给定的表达式之一为真时,使用操作符"||"的整个表达式值才为真。而"&&"操作符连接的两个表达式的值都为真时结果才为真。
例子4:
NF == 6 && NR >1
字段数量必须等于6且记录编号大于1
注意&&比||优先级别高。
NR>1 && NF >=2 ||$1 ~ / /
圆括号 表明其内部的表达式首先被求值。
(NR>1 && NF >=2) ||$1 ~ / /
这样写等价之前的表达式,但更明确。
第一表达式和第二表达式同时为真,第三表达式无论真假整体为真
第三表达式为真时,第一和第二表达式逻辑运算结果无论真假,整体为真。
如果按如下改写,那么意义就不一样了。
NR>1 && (NF >=2 ||$1 ~ / /)
第一表达式为真,第二和第三表达式其中一个为真,整体表达式为真
试验今天的AMD核显U还能被叫做APU吗?5700G核显挑战同级独显迷茫时请奔跑起来,即便会漫无目的Hello大家好我是尤娜,游戏向硬件数码爱好者一只。本文灵感来源于下面一个知乎提问一个带核显的CPU好还是配了同样性能的独显好?知乎因为我手里恰好有
请遵守游戏规则,参与or弃权?2023年,中国,一个名为价格之战的游戏重新风靡汽车界,游戏规则只有两个选项参与or弃权。随着时间的推进,游戏参与者愈来愈多,大有燎原之势。1月6日,游戏的头号玩家特斯拉公开了自己
你认为的穷屌丝,其实是神一样的存在有这么一个人,开发的产品被认为是屌丝的象征,我想大家都知道他的名字,但是大多数人都猜不透他的身份,他就是大名鼎鼎的雷布斯。在很多人眼里,雷军只是个英语不好的大佬,但实际上这互联网半
随着比特币重回23,000美元,THETALIDO闪现看涨迹象由于宏观经济数据暗示美联储将继续加息,本周加密货币市场和美国股市出现获利了结。比特币(BTC)下跌超过4,标准普尔500指数下跌2。7,创下今年最糟糕的一周。CMEFedWatch
新思路会发电的水凝胶敷料在人类文明发展的过程中,创伤始终伴随着我们。在古代,由于医疗卫生条件的缺乏,大型创伤往往意味着死亡。为了应对出血与伤口感染,人们在不断地实践中,学会了使用草药覆盖伤口以及包扎止血的
史上最严婴幼儿奶粉新国标今起实施澎湃新闻记者汪琦雯两年过渡期后,婴幼儿配方奶粉新国标正式实施。2021年3月18日,国家卫生健康委网站发布50项食品安全国家标准,其中的食品安全国家标准婴儿配方食品(GB10765
如何打造智造4。0用工平台智造人才直聘平台智造4。0人才数据库顺势者成大事xxx智造4。0是我国最重要的经济竞争战略,一定要用百年大计,历史重任来形容。现在国家迫切需要提升中国智造水平。顺势者成大事,国家和市场需要什么,企业就应该做什么。今天
拿回生命的主权(相信科学,切勿迷信)初心合一太阳宝前几天有人问我我的初心是什么?我的信仰是什么?我的初心是合一,我的信仰是我自己。与其说合一,不如说是让自己开心敞开心扉,接纳自己,认识自己,接纳万物,认识万物,理解自
尼博士完成清单至关重要!你到第几步了?当坚持成为一种常态,结果会是如何似乎并不是那么重要!开心的是核心团队始终不忘初心,主产品始终是心中z向往的Web3。0,别人是否坚持不重要,重要的是自己相信,自己对未来的理解是对的
在我们究竟有没有资格去评判别人?chatGTP如是说随着社会的发展,言论自由的范围不断扩大,人们可以自由地表达自己的观点。这让我们开始思考,在这样的社会里,我们究竟有没有资格去评判别人?首先,我们要明确,评判别人和尊重他人是不同的概
钱塘江心香一瓣丨也想牧牛牛边卧随着年龄的递增,我越来越喜欢勤勤恳恳全无侵略性的牛了。不知从何时起,当我伫立原野凝视劳作的牛,我会想起李可染先生笔下的牛。在李可染的牧牛图旁,我的面前会出现一个幻景真实的牛从田间从