shell编程系列17--文本处理三剑客之awk动作中的表达式用法

awk动作表达式中的算数运算符

awk动作中的表达式用法总结: 运算符 含义
+ 加
- 减
* 乘
/ 除
% 模
^或** 乘方
++x 在返回x变量之前,x变量加1
x++ 在返回x变量之后,x变量加1
--x 在返回x变量之前,x变量减1
x-- 在返回x变量之后,x变量减1 、使用awk计算/etc/services中的空白行数量
awk 'BEGIN{sum=0}/^$/{++sum}END{print sum}' /etc/services
、计算学生课程分数平均值,学生课程文件内容如下:
Allen
Mike
Zhang
Jerry
Han
Li # 代码如下:
[root@localhost shell]# awk 'BEGIN{printf "%-20s%-20s%-20s%-20s%-20s%-20s\n","Name","Chinese","English","Math","Physical","Average"}{sum=$2+$3+$4+$5;avg=sum/4}{printf "%-20s%-20d%-20d%-20d%-20d%-0.2f\n",$1,$2,$3,$4,$5,avg}' student.txt
Name Chinese English Math Physical Average
Allen 91.00
Mike 93.50
Zhang 83.25
Jerry 83.75
Han 86.25
Li 91.00 [root@localhost shell]# awk 'BEGIN{num1=20;num2+=num1;print num1,num2}' [root@localhost shell]# awk 'BEGIN{num1=20;num2=30;print num1+num2}' [root@localhost shell]# awk 'BEGIN{num1=20;num2=30;print num1-num2}'
-
[root@localhost shell]# awk 'BEGIN{num1=20;num2=30;print num1*num2}' [root@localhost shell]# awk 'BEGIN{num1=20;num2=30;print num1/num2}'
0.666667
# 保留小数后两位
[root@localhost shell]# awk 'BEGIN{num1=20;num2=30;printf "%0.2f\n",num1/num2}'
0.67 [root@localhost shell]# awk 'BEGIN{num1=20;num2=3;printf "%0.2f\n",num1**num2}'
8000.00
# 打印
[root@localhost shell]# awk 'BEGIN{num1=20;num2=3;printf "%0.2f\n",num1^num2}'
8000.00 #
[root@localhost shell]# awk 'BEGIN{x=20;y=x++;print x,y}' [root@localhost shell]# awk 'BEGIN{x=20;y=++x;print x,y}' [root@localhost shell]# awk 'BEGIN{x=20;y=--x;print x,y}' [root@localhost shell]# awk 'BEGIN{x=20;y=x--;print x,y}' # 输出平均值
[root@localhost shell]# cat student.txt
Allen
Mike
Zhang
Jerry
Han
Li
[root@localhost shell]# awk '{total=$2+$3+$4+$5;AVG=total/4}{printf "%-8s%-5d%-5d%-5d%-8d%0.2f\n",$1,$2,$3,$4,$5,AVG}' student.txt
Allen 91.00
Mike 93.50
Zhang 83.25
Jerry 83.75
Han 86.25
Li 91.00
# 加上标题并格式化输出
[root@localhost shell]# awk 'BEGIN{printf "%-10s%-10s%-10s%-10s%-10s%-10s\n","name","Yuwen","math","English","Pysical","Average"}{total=$2+$3+$4+$5;AVG=total/4}{printf "%-10s%-10d%-10d%-10d%-10d%-10.2f\n",$1,$2,$3,$4,$5,AVG}' student.txt
name Yuwen math English Pysical Average
Allen 91.00
Mike 93.50
Zhang 83.25
Jerry 83.75
Han 86.25
Li 91.00

shell编程系列17--文本处理三剑客之awk动作中的表达式用法的更多相关文章

  1. shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句

    shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句条件语句 if(条件表达式) 动作1 else if(条件表达式) 动作2 else 动 ...

  2. shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计

    shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计 shell中的数组的用法: shell数组中的下标是从0开始的 array=("Allen" & ...

  3. shell编程系列14--文本处理三剑客之awk的概述及常用方法总结

    shell编程系列14--文本处理三剑客之awk的概述及常用方法总结 awk是一个文本处理工具,通常用于处理数据并生成结果报告 awk的命名是它的创始人 Alfred Aho.Peter Weinbe ...

  4. shell编程系列20--文本处理三剑客之awk常用选项

    shell编程系列20--文本处理三剑客之awk常用选项 awk选项总结 选项 解释 -v 参数传递 -f 指定脚本文件 -F 指定分隔符 -V 查看awk的版本号 [root@localhost s ...

  5. shell编程系列19--文本处理三剑客之awk中的字符串函数

    shell编程系列19--文本处理三剑客之awk中的字符串函数 字符串函数对照表(上) 函数名 解释 函数返回值 length(str) 计算字符串长度 整数长度值 index(str1,str2) ...

  6. shell编程系列16--文本处理三剑客之awk模式匹配的两种方法

    shell编程系列16--文本处理三剑客之awk模式匹配的两种方法 awk的工作模式 第一种模式匹配:RegExp 第二种模式匹配:关系运算匹配 用法格式对照表 语法格式 含义 RegExp 按正则表 ...

  7. shell编程系列15--文本处理三剑客之awk格式化输出printf

    shell编程系列15--文本处理三剑客之awk格式化输出printf printf的格式说明符 格式符 含义 %s 打印字符串 %d 打印十进制数 %f 打印一个浮点数 %x 打印十六进制数 %o ...

  8. shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容

    shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容 删除命令对照表 命令 含义 1d 删除第一行内容 ,10d 删除1行到10行的内容 ,+5d 删除10行到16行的内容 /p ...

  9. shell编程系列9--文本处理三剑客之sed概述及常见用法总结

    shell编程系列9--文本处理三剑客之sed概述及常见用法总结 sed的工作模式:对文本的行数据一行行处理,如下图 sed(stream editor),是流编辑器,依据特定的匹配模式,对文本逐行匹 ...

随机推荐

  1. HTML5 Canvas 绘制图片不显示的问题

    问题: 慕名赶来,却一脚踩空,低头一看,地上一个大坑. 事情是这样的,在我看完w3c的介绍和很有说服力和教学力的demo后,本着实践出真知的思想决定上手一试,这一试不要紧~ 我按照流水线工程铺设以下几 ...

  2. 神经网络(11)--具体实现:unrolling parameters

    我们需要将parameters从矩阵unrolling到向量,这样我们就可以使用adanced optimization routines. unroll into vectors costFunct ...

  3. NOIP2018模板总结【数学】

    质因数分解 //质因数分解 int prime[MAXN], tim[MAXN], cnt; void Divide(int N) { printf("%d = ", N); fo ...

  4. Backpack II

    Description There are n items and a backpack with size m. Given array A representing the size of eac ...

  5. LeetCode 321. Create Maximum Number

    原题链接在这里:https://leetcode.com/problems/create-maximum-number/description/ 题目: Given two arrays of len ...

  6. SP10707 COT2 - Count on a tree II 莫队上树

    题意:求一条链 \((u,v)\) 上不同的颜色数. 我们可以求出树的出栈入栈序(or 括号序?我也不确定). 图(from attack) 然后有一个很优美的性质: 设点 \(u\) 的入栈时间为 ...

  7. C# 调用 C++ Dll 类型转换的方式 全

    摘要:C#引用C++ Dll 所有类型转换的方式         //C++中的DLL函数原型为         //extern "C" __declspec(dllexport ...

  8. 2019/12/5BJFirstDay--scrum后台+cpp项目前台环境跑起来!!!

    1.配置服务器: 2.进入cd C:\java\25.beijing\06.vuejs\cpp201911221829\cpp 3.运行的命令是:npm run dev 4.先启动 5.然后再启动cp ...

  9. C语言实现金字塔

    #include <stdio.h> int main(void) { int i=0, j =0, k= 0, line; printf("请输入金字塔的总行数:") ...

  10. 洛谷P1731[NOI1999]生日蛋糕

    题目 搜索+剪枝,主要考察细节和搜索的顺序,首先可以发现所有数据均为整数,所以初始化每层的蛋糕R和H是整数,然后从高层向低层搜索,然后预处理出各层向低层的最小面积和体积用来剪枝. 就可以每层从当前最大 ...