AWK 常用语法与一行命令速查

常用命令

awk '{print $1}' file
awk -F: '{print $1, $3}' /etc/passwd
awk 'NR==1 || NR%2==0' file
awk '$3 > 100 {print $1, $3}' data.txt
awk '/error/ {count++} END {print count}' app.log
awk 'BEGIN {FS=","; OFS="\t"} {print $1, $2}' data.csv
awk '{sum += $2} END {printf "%.2f\n", sum}' data.txt
awk '{a[$1] += $2} END {for (k in a) print k, a[k]}' data.txt
awk '!seen[$0]++' file          # 去重保序
awk 'NF' file                    # 去掉空行
awk '{print NR": "$0}' file

常用变量与模式

写法 含义
$0 整行
$1..$n 第 n 个字段
NR 当前行号
NF 当前行字段数
FS / OFS 输入/输出分隔符
BEGIN / END 处理前/后执行
/regex/ 匹配行
!seen[$0]++ 去重保序

场景速查

目的 写法
按列求和 awk '{s+=$2} END{print s}'
按 key 聚合 awk '{a[$1]+=$2} END{for(k in a) print k,a[k]}'
条件过滤 awk '$3 ~ /error/ {print}'
格式化输出 awk '{printf "%-10s %s\n", $1, $2}'
多文件处理 awk 'FNR==1{print FILENAME}' file1 file2
替换字段 awk '{$2="x"; print}' OFS=,

易错点

相关命令