文章目录
- 1. 基本用法
- 2. 常用参数
- 3. 用法举例
- 4. 注意事项
awk
是一款强大的文本处理工具,用于逐行读取文件,根据指定规则对每行内容进行格式化处理和分析。它支持复杂的逻辑运算、正则表达式和条件控制。
1. 基本用法
-
语法:
awk [选项] '脚本' 文件 awk [选项] -f 脚本文件 文件
-
功能:
- 基于字段对文本数据进行操作,例如过滤、计算、格式化输出等。
-
此命令是否系统自带:此命令是系统默认自带的,无需额外安装。
2. 常用参数
- 脚本相关:
-f
:从指定文件中读取awk
脚本。-v
:定义用户变量,如-v var=value
。
- 输出控制:
-F
:指定输入文件的字段分隔符(默认是空格或制表符)。--help
:显示帮助信息。--version
:显示命令版本信息。
- 内置变量:
NR
:当前处理的行号。NF
:当前行的字段数目。FS
:字段分隔符,默认为空格或制表符,可自定义。OFS
:输出字段分隔符,默认为空格。RS
:记录分隔符,默认为换行符。ORS
:输出记录分隔符,默认为换行符。$n
:表示当前行的第 n 个字段,例如$1
表示第一个字段。
3. 用法举例
-
基本输出:
输出文件的每一行内容:awk '{print}' file.txt
-
打印指定字段:
输出文件的第 1 和第 3 列:awk '{print $1, $3}' file.txt
-
指定分隔符:
按:
分隔字段(如/etc/passwd
文件):awk -F ':' '{print $1, $3}' /etc/passwd
-
条件过滤:
输出第 2 列大于 100 的行:awk '$2 > 100 {print $0}' file.txt
-
使用内置变量:
输出行号和每行字段数:awk '{print NR, NF}' file.txt
-
统计数据:
计算第 2 列的总和:awk '{sum += $2} END {print sum}' file.txt
-
模式匹配:
输出包含error
的行:awk '/error/ {print $0}' file.txt
-
修改分隔符:
将字段用逗号分隔后输出:awk 'BEGIN {OFS=","} {print $1, $2}' file.txt
-
复杂脚本:
使用脚本文件处理文本:awk -f script.awk file.txt
4. 注意事项
-
默认分隔符为空格,需用
-F
指定其他分隔符。 -
awk
的脚本语言支持复杂逻辑,如条件语句和循环,可用于高级文本处理。 -
注意
awk
中变量无需声明,直接赋值即可使用。 -
使用
BEGIN
和END
块处理全局操作,例如初始化变量或在处理结束后输出汇总结果:awk 'BEGIN {print "Start"} {print $0} END {print "End"}' file.txt
-
对于大文件和复杂逻辑,
awk
性能优于许多其他文本处理工具。