当前位置: 首页 > news >正文

第5.5节:awk算术运算

1 第5.5节:awk算术运算

::: alert-danger
awk的算术运算与C语法的算术运算调试类似,如果用户学习过C/C++语言,此章节可以快速一扫而过。
:::

awk 语言在计算表达式时会使用常见的算术运算符。所有这些算术运算符都遵循常规的优先级规则,其工作方式与你预期的一致。

下面的示例使用了一个名为 grades.txt 的文件,该文件包含学生姓名列表以及每个学生的三门考试成绩(这是一个小班):

Pat  100 97 58
Sandy  84 72 93
Chris  72 92 89

以下程序读取 grades.txt 文件并输出成绩的平均值:

$ awk '{ sum = $2 + $3 + $4 ; avg = sum / 3
>        print $1, avg }' grades.txt
-| Pat 85
-| Sandy 83
-| Chris 84.3333

以下列表按优先级从高到低的顺序列出了 awk 中的算术运算符:

表达式含义解释
x ^ y
x ** y
幂运算;xy 次幂。例如,2 ^ 3 的值是 8;
字符序列 **^ 等价。(c.e. 可能是特定语境下的缩写,若无特殊说明可忽略 )
- x取反(否定)。
+ x一元正号;将表达式转换为数字(一般用于显式强调数值类型转换,
实际运算里单独用效果常类似直接取值,但有语法语义上的转换作用 )。
x * y乘法运算。
x / y除法运算;由于 awk 中所有数字都是浮点数,结果不会取整为整数。
比如 3 / 4 的结果是 0.75 。(这是个常见误区,尤其是对于 C 语言程序员而言,
容易忘记 awk 里所有数字都是浮点型,对看似整数的常量做除法会得到实数,而非整数 )
x % y取余运算;文本中紧跟在本列表之后会有更详细的讨论。
x + y加法运算。
x - y减法运算。

一元正号和负号优先级相同,乘法类运算符(乘法、除法、取余)优先级相同,加法和减法优先级相同。

计算 x % y(取余运算)时,商向零取整为整数后再乘以 y 。用该结果去减 x ,此操作有时也称作 “截断取余(trunc - mod)” 。以下等式始终成立:

b * int(a / b) + (a % b) == a  

这种取余定义可能带来一个不太理想的结果:若 x 为负数,x % y 结果也为负。例如:

-17 % 8 = -1  

该定义符合 POSIX 标准,标准规定 % 运算符的结果,等价于使用标准 C 语言 fmod() 函数的结果,而该函数的工作方式就如前文所述。

在其他 awk 实现中,取余结果的符号可能因机器而异。

注意:POSIX 标准仅规定用 ^ 进行幂运算。为了最大程度保证可移植性,请勿使用 ** 运算符。


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

http://www.dtcms.com/a/339300.html

相关文章:

  • RabbitMQ:交换机(Exchange)
  • LeetCode-17day:贪心算法
  • 95、23种设计模式之建造者模式(4/23)
  • 大模型 + 垂直场景:搜索/推荐/营销/客服领域开发新范式与技术实践
  • 抓取手机游戏相关数据
  • 细化的 Spring Boot 和 Spring Framework 版本对应关系
  • c++计算器(简陋版)
  • 【全面推导】策略梯度算法:公式、偏差方差与进化
  • 差分(附带例题题解)
  • 深度学习 --- 基于ResNet50的野外可食用鲜花分类项目代码
  • 基于单片机身体健康监测/身体参数测量/心率血氧血压
  • 接口性能测试工具 - JMeter
  • . keepalived+haproxy
  • Ubuntu22.04安装docker最新教程,包含安装自动脚本
  • 【QT入门到晋级】进程间通信(IPC)-socket(包含详细分析及性能优化)
  • Day08 Go语言学习
  • C#/.NET/.NET Core技术前沿周刊 | 第 50 期(2025年8.11-8.17)
  • es7.x es的高亮与solr高亮查询的对比对比说明
  • 彻底清理旧版本 Docker 的痕迹
  • pytorch学习笔记-模型训练、利用GPU加速训练(两种方法)、使用模型完成任务
  • 常见的软件图片缩放,算法如何选择?
  • 深入解析Spring MVC运行流程:从请求到响应的完整旅程
  • 完整的训练与测试套路 小土堆pytorch记录
  • PyTorch自动求导
  • PID调节
  • Go 进阶学习路线
  • 传统艾灸VS七彩喜艾灸机器人:同样的艾香,多了4分“巧”
  • 电脑出现‘无法启动此程序,因为计算机中丢失dll’要怎么办?2025最新的解决方法分析
  • 家庭健康能量站:微高压氧舱结合艾灸机器人,智享双重养生SPA
  • 大模型基础:Foundamentals of LLM