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

第2.2节:运行AWK脚本方式

1 第2.2节:运行AWK脚本方式

  AWK 脚本可以通过命令行方式和脚本文件方式来运行,根据用户的使用场景,可以灵活的使用最便利的方式,命令行方式对于处理逻辑简单的场景(如:1行脚本搞定的场景)非常方便和清晰,而脚本方式则对处理逻辑比较复杂的场景(建议:超过3个语句时使用脚本方式)比较友好。

1.1.1 命令行方式

  在命令行中直接输入 AWK 命令来执行简单的文本处理任务,适合快速完成一些临时性的操作。其基本语法如下:

awk 'pattern { action }' input_file
  • pattern:用于匹配输入文件中的行,它可以是正则表达式、比较表达式、也可以什么都不写(input_file每行文本都处理)等。
  • action:是要对匹配行执行的操作,通常是一些 AWK 代码。
  • input_file:是要处理的输入文件。
1.1.1.1 示例

假设有一个名为 data.txt 的文件,内容如下:

水果    单价(元)
apple   10
banana  20
cherry  30

现在要打印出第二列大于 15 的行,可以使用以下命令:

awk '$2 > 15 { print $0 }' data.txt

在这个命令中:

  • $2 > 15 是模式,用于匹配第二列大于 15 的行。
  • { print $0 } 是动作,用于打印匹配的整行内容($1表示第1列、$2表示第2列… 依次类推)。
  • data.txt 是输入文件。

1.1.2 脚本文件方式

  当 AWK 脚本比较复杂,包含多个模式 - 动作块以及 BEGINEND 块时,将脚本保存为文件并运行更为方便,有些场景是需要把所有数据源都读取和预处理完,再在END块中汇总处理。具体步骤如下:

1.1.2.1 1. 创建脚本文件

  使用文本编辑器创建一个以 .awk 为扩展名的文件,例如 script.awk,并编写 AWK 脚本。以下是一个示例脚本:

#!/usr/bin/awk -f

# BEGIN 块,在处理文件前执行
BEGIN {
    total = 0
    print "Processing data..."
}

# 模式 - 动作,对每一行执行操作
{
    total += $2
    print $1, "has a value of", $2
}

# END 块,在处理完文件后执行
END {
    print "Total value:", total
}
1.1.2.2 2. 给脚本文件添加执行权限

  在终端中使用 chmod 命令给脚本文件添加执行权限:

chmod +x script.awk
1.1.2.3 3. 运行脚本

  使用以下命令来运行脚本:

./script.awk data.txt

或者使用 awk 命令指定脚本文件:

awk -f script.awk data.txt

通过上述两种方式,你可以根据具体需求选择合适的方法来运行 AWK 脚本。命令行方式适合快速简单的任务,而脚本文件方式则更适合复杂的、需要重复使用的脚本。


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

相关文章:

  • overleaf中会议参考文献使用什么标签:inproceedings
  • 脚对齐调研学习笔记
  • 【多线程】synchronized底层实现的方式
  • GPU 模型部署实战以 Llama3 70B、Qwen 与 DeepSeek 为例
  • 算法方法快速回顾
  • mysql入门操作
  • 交易在规则框架下运作,反而能强化自身纪律
  • JavaScript 在 Chrome 中运行详解
  • Buildroot 增加系统启动项并解决后台无法获取输入(串口)
  • PV操作指南
  • 【漏洞复现】Next.js中间件权限绕过漏洞 CVE-2025-29927
  • 穿越之程序员周树人的狂人日记Part7__教育战争2.0
  • C语言 —— 此去经年梦浪荡魂音 - 深入理解指针(卷四)
  • C++类与对象的第一个简单的实战练习-3.24笔记
  • 洛谷题单入门4-P5729 【深基5.例7】工艺品制作-python
  • 一文了解Gradle 依赖管理(五)- 依赖管理缓存依赖
  • K8S学习之基础四十五:k8s中部署elasticsearch
  • Spec2MP:项目管理之项目质量管理
  • oracle数据库(数据库启动关闭/sqlplus登录及基本操作/设置字符集/distinct去重)
  • 光流 | 基于光流的人体异常行为检测算法原理,公式,算法改进,matlab代码
  • 波兰关闭俄罗斯驻克拉科夫领事馆
  • 金俊峰已跨区任上海金山区委副书记
  • 中方代表团介绍中美经贸高层会谈有关情况:双方一致同意建立中美经贸磋商机制
  • 浙江首个核酸药谷落子杭州,欢迎订阅《浪尖周报》第23期
  • 耿军强任陕西延安市领导,此前任陕西省公安厅机场公安局局长
  • 要更加冷静地看待“东升西降”的判断