awk

基本语法(Synopsis)

awk [OPTIONS] 'PROGRAM' [FILE ...]
awk [OPTIONS] -f PROGRAM_FILE [FILE ...]

[] 表示可选项,... 表示可重复;大写名称表示需要替换的参数。

基本功能与推荐用法

awk 按“记录和字段”处理文本,适合列选择、过滤、统计和简单报表。 以下示例使用可移植语法,在 GNU awk 和常见 awk 实现中均可工作。

awk '{print $1}' file.txt
awk -F, '{print $1, $3}' data.csv
awk '$3 > 100 {print $1, $3}' data.txt
awk '{sum += $2} END {print sum}' data.txt
awk 'BEGIN {FS=OFS=","} {print $1, toupper($2)}' data.csv
awk '{count[$1]++} END {for (k in count) print k, count[k]}' data
ps -ef | awk '$8 ~ /node/ {print $2, $8}'

推荐:

  • 使用 -F 设置输入分隔符,使用 OFS 设置输出分隔符。
  • Shell 值通过 -v 安全传入:
awk -v limit=100 '$2 > limit' data.txt
  • 正式 CSV 可能包含引号、换行和转义,不能简单按逗号切分,应使用 CSV 解析器。

示例中的选项、参数与子命令

本表解释本页示例实际出现的选项、参数、子命令及必要的辅助命令语法。

语法元素含义
-F SEP指定输入字段分隔符。
-v NAME=VALUE在执行程序前设置 awk 变量。
BEGIN { ACTION }在读取输入前执行一次。
END { ACTION }在全部输入处理完成后执行一次。
$0 / $N分别表示整条记录和第 N 个字段。
PATTERN { ACTION }仅对匹配 PATTERN 的记录执行 ACTION。
~ REGEXP判断字符串是否匹配正则表达式。
-f PROGRAM_FILE从 PROGRAM_FILE 读取 awk 程序。
ps -efps 的完整格式进程列表;e 表示全部进程,f 表示完整格式。

官方资料