awk脚本的语法
如何调用脚本
一. 使用 -f 选项运行脚本
将 awk 命令写入一个文本文件(例如 my.awk),然后用 -f 调用:
1 | awk -f my.awk 输入文件1 [输入文件2 ...] |
示例脚本 my.awk:
1 | BEGIN { print "开始处理" } |
运行:
1 | awk -f my.awk data.txt |
二. 让 awk 脚本直接可执行(shebang)
在脚本文件的第一行添加 #!/usr/bin/awk -f,然后赋予执行权限。
示例脚本 count.awk:
1 | #!/usr/bin/awk -f |
赋予权限并运行:
1 | chmod +x count.awk |
注意:shebang 中 awk 的路径是 /usr/bin/awk,也可用 #!/usr/bin/env awk -f 以增强可移植性。
三. 在脚本中处理多个文件
1 | awk -f script.awk file1.txt file2.txt |
四. 向脚本传递变量
使用 -v 选项可以在脚本执行前定义变量:
1 | awk -f script.awk -v threshold=100 data.txt |
脚本内可直接使用 threshold。
五. 结合其他选项
六.调试与注意事项
语法检查:可用 awk -f script.awk –source ‘BEGIN{exit}’ 简单检查,或使用 gawk –lint -f script.awk。
脚本中的注释:以 # 开头,直到行末。
换行与分号:语句之间可用分号分隔,也可换行。
函数定义:支持自定义函数,放在脚本中适当位置。
awk脚本的结构和语法
一.脚本的基本结构
1 | BEGIN { 初始化操作 } # 在处理任何输入行之前执行 |
示例:
1 | BEGIN { FS=":"; print "开始处理" } |
二.变量与内置变量
内置变量(部分)
| 变量 | 含义 |
|---|---|
| $0 | 当前整行 |
| $n | 第n个字段 |
| NF | 当前行字段数 |
| NR | 当前行号(所有文件累计) |
| FNR | 当前文件内行号 |
| FS | 输入字段分隔符(默认空格或制表符) |
| OFS | 输出字段分隔符(默认空格) |
| RS | 输入记录分隔符(默认换行) |
| ORS | 输出记录分隔符(默认换行) |
| ARGC, ARGV | 命令行参数数组 |
| FILENAME | 当前输入文件名 |
三.用户自定义变量
变量名由字母、数字、下划线组成,区分大小写,无需显式声明,默认值为空字符串或0。
1 | BEGIN { count = 0 } |
运算符
算术:+、 -、 *、 /、 %、 ^(^ 为乘方)
字符串连接:空格, “a” “b” 得 “ab”
赋值:=、 +=、 -=、 *=、 /=、 %=、 ^=
比较:==、 !=、 >、 <、 >=、 <=(字符串比较按字典序)
逻辑:&&、||、!
三元:条件 ? 表达式1 : 表达式2
四.控制语句
if-else
1 | if (条件) { |
while/do-while
1 | while (条件) 语句 |
for循环
1 | for (初始化; 条件; 迭代) 语句 |
未完待续
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hello World!
