awk入门 awk 学习 1 内置变量 变量 含义 示例 $0 当前整行内容 print $0 打印整行 $1、$2... 第1、2...个字段 print $1, $3 NF 当前行的字段个数 print NF NR 当前已读的行号所有文件累计 print NR, $0 FNR 当前文件内的行号每个文件重置 处理多文件时区分用 FS 字段分隔符输入默认空格 BEGIN{FS,} OFS 输出字段分隔符默认空格 BEGIN{OFS|} RS 记录分隔符输入默认换行符 BEGIN{RS} 处理空行分隔 ORS 输出记录分隔符默认换行符 BEGIN{ORS\n\n} 2 模式 类型 语法 示例 含义 空模式 无 {print $1} 每一行都执行 正则表达式 /正则/ /^root/ 匹配该正则的行 表达式 表达式结果非0或非空 $3 100 条件为真的行 范围模式 模式1, 模式2 /start/,/end/ 从匹配模式1到模式2的行 特殊模式 BEGIN / END BEGIN{...} 处理前/后执行一次 3 动作 类型 示例 打印/输出 print、printf 变量赋值 sum $1 $2 算术/逻辑运算 total $3 条件判断 if...else、switch 循环 while、for、do...while 数组操作 arr[$1] $2 流程控制 break、continue、next、exit 函数调用 length($0)、gsub()、srand() 分组 { 多个语句; 用分号隔开 } 4 自定义变量 方式 语法 作用范围 示例 脚本内赋值 变量名 值 整个 awk 脚本 sum 0 -v 选项 awk -v varvalue 可在 BEGIN 块中使用 awk -v sep, {print $1} 命令行赋值 awk 脚本 varvalue 在读取文件前生效可动态 awk {print $1} max100 file.txt 5 常见正则 元字符 含义 示例 匹配内容 . 任意单个字符除换行符 a.c abc、ac、a c ^ 行首 ^root 以 root 开头的行 $ 行尾 bash$ 以 bash 结尾的行 * 前一个字符重复 0 次或多次 a*b b、ab、aaab ? 前一个字符重复 0 次或 1 次 colou?r color、colour [...] 字符集合中的任意一个 [0-9] 任意数字 [^...] 不在字符集合中的任意一个 [^0-9] 非数字字符 | 或gawk 支持 | 或 | error|warning error 或 warning (...) 分组 (abc) abc、abcabc {n} 重复 n 次 [0-9]{4} 4 位数字 {n,} 重复至少 n 次 a{2,} aa、aaa、aaaa {n,m} 重复 n 到 m 次 [0-9]{2,4} 2~4 位数字