awk 是一个强大的文本处理工具,它在 Unix 和类 Unix 系统中用于处理和分析文本文件。awk 能够对输入的文本数据进行模式匹配和处理,执行各种文本操作,如搜索、替换、报告等。
基本语法
awk [options] 'pattern { actions }' file- options:可以是控制
awk行为的命令行选项。 - pattern:是一个模式,
awk会在输入文本中搜索匹配该模式的行。 - actions:当找到匹配的模式时,
awk会执行这些动作。 - file:是要处理的文件。
常用模式和动作
pattern可以是一个正则表达式,或者一个范围(如1,5表示行号 1 到 5)。actions是一系列命令,可以是打印、计算、赋值等。
常用选项
-f:从文件中读取awk程序。-F:设置字段分隔符,默认是空格或制表符。-v:创建一个awk变量并初始化。
示例
- 打印文件的第 2 行:
awk 'NR==2' filename.txtNR 是内置变量,表示当前记录的编号,对于每一行来说,它就是行号。
- 打印每一行的第一个字段:
awk '{print $1}' filename.txt$1 表示当前行的第一个字段。
- 计算文件中行数:
awk 'END{print NR}' filename.txtEND 是一个特殊的模式,它匹配输入的最后一个记录。
- 计算文件中某个字段的总和:
awk '{sum += $1} END{print sum}' filename.txt这里 sum 是一个变量,用于累加第一个字段的值。
- 打印包含特定文本的行:
awk '/pattern/' filename.txt这会打印包含 pattern 文本的所有行。
- 使用字段分隔符:
awk -F, '{print $2}' filename.csv这里 -F, 设置字段分隔符为逗号,$2 表示打印每一行的第二个字段。
注意事项
awk的模式可以是复杂的正则表达式,也可以是条件表达式。awk脚本可以非常复杂,包括循环、条件语句、函数定义等。awk内置了许多变量,如NF(当前行的字段数)、NR(已处理的记录数)、FS(字段分隔符)等。awk可以处理文本文件,也可以从管道或命令的输出中读取数据。
awk 是一个非常灵活的工具,它在文本处理和数据分析方面的能力非常强大,适合于各种复杂的文本处理任务。










