命令格式:awk '{commands} [{other commands}]'awk 'condition{commands} [{other commands}]' 如:awk '$4=="gold"{print $0}' xxx.txt —— 打印第四列为gold的行{$0 $1 $2 ...}: $0表示整行,$1表示第一列,$2表示第二列…… NR: number of record,{print $NR, $0}可以给行加上行号NF: number of fields,每个记录的列数(默认空格分割计数)打印第7行: awk 'NR==7{print $0}' test.txt打印有10列的行: awk 'NF==10{print $0}' test.txt打印最后一列: awk '{print $NF}' xxx打印倒数第二列: awk '{print $(NF-1)}' xxx{print $1, $2} 中的逗号表示使用默认输出分隔符连接1,2列并打印。(默认是空格){print $1$2} 和 {print $1 $2} 等效,第1,2列直接连接,中间没有分隔符。(即输出语句的空格表示直接连接)定义变量:awk 'BEGIN{在这里定义} {后续命令}'内建变量:FS:输入分隔符OFS:输出分隔符 (O,不是零)自定义输入分隔符使用逗号:awk 'BEGIN{FS=","} {print $1, $2}' test.txt自定义输出分隔符使用逗号:awk 'BEGIN{FS=","; OFS=","} {print $1, $2}'
算术运算、
字符串和数字自动转换、
字符串和数字运算时自动parse开头的数字
使用正则
awk '/正则式/{命令}' xxxawk '/abc/{print $0}' xxx 打印包含abc的行正则式简介:1. /abc/ 包含abc2. /^abc$/ 匹配开头和结束3. . 任意字符或空格4. 转义 \. \? \/5. 中括号 [xyz] 匹配xyz中的任意一个字符 [a-z] 匹配a-z范围内任意字符 [a-zA-Z] [^a-z] ^放在中括号中表示不匹配,如 /a[^a-z]c/ 可以匹配 aBc,不能匹配abc6. 数量: * 0次或若干次 + 1次或若干次 ? 0次或1次 {a,b} 指定出现a~b次数,如{3}表示出现3次,{4,9} 表示可以出现4,5,6,7,8,9次7. () 匹配的单位,如 /(ab){3}/ 要求包含ababab