Shell_工具_awk

鉴于之前用awk只了解到点皮毛,而且工作中用之甚少,这里准备了解并整理一下awk的用法,尽量保证一个公式覆盖大部分需求

通用公式

  • 通用公式并不是所有场景都能满足,只是符合awk基础使用的大部分场景
  • awk调用主要包括两种:XXXX | awk.script 或者 awk.script filename
  • awk.script通用公式如下:
awk -F '分隔符(默认\t)' '
	BEGIN {print "可定义变量或者打印题头";size=0;}

	{print "awk逻辑语句可以有判断或者循环,语法和其他语言保持一致";
		if($1!=0){
			size=size+$1;
		}
	}

	END {print "可打印结果或重定向";print "size is: ",size}
'

公式说明

1.执行的时候串行执行
2.先执行BEGIN内的脚本,主要是打印题头或者变量初始化;
3.再按照调用读数据源,\\n分割作为一条记录,按照指定的分隔符进行切分,结果类似于数组,我们使用$1,$2(1开头)调用对应的数据,然后执行awk逻辑语句(可以有循环或者判断等);
4.再执行END内的脚本,包括输出结果等;

开始测试

  • 准备数据
    personal.txt
jack 16 shanghai
tom 20 shenzhen
mary 19 beijing
  • 需求1:统计年满18岁同学的总年纪
awk -F ' ' '
	BEGIN {totalAge=0;}

	{
		if($2>18){
			totalAge=totalAge+$2;
		}
	}

	END {print "totalAge is: ",totalAge}
' personal.txt

当然上面的实现可以适当的进行简化,暂时就不加赘述,本文旨在创建通用模板,快速使用并上手awk

  • 需求2:求所有同学的平均年纪

使用内置计数器NR或者自己按需求统计也可以

awk -F ' ' '
	BEGIN {totalAge=0;}

	{
		totalAge=totalAge+$2;
	}

	END {print "averageAge is: ",totalAge/NR}
' personal.txt

结语

当然awk的功能不仅限于此,此笔记的目的在于快速回忆起awk的使用方法,尽量覆盖大部分的需求

附录

awk常用场景

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值