格式:
awk [options] ‘program‘ var=value file…
program: BEGIN语句块、 模式匹配的通用语句块 、END语句块
常用选项:-F 指定输入分隔符;-v var=value 变量赋值
支持管道,action默认为print$0,pattern为空时无筛选,
默认分隔符为空格,
有输出动作具体字符串指定时(print “hello ”),不输出输入内容
默认支持正则表达式
awk变量
常用内置变量
FS,字符分隔符, OFS, 输出分隔符,
RS,输入换行符 ORS,输出换行符
NF,字段数量 FILENAME,文件名
NR,记录编号,行号 FNR,文件分别计数
ARGC,命令行参数个数
ARGV,数组,保存的是命令行所给定的各参数
printf
printf “FORMAT”, item1, item2, ...
不会自动换行,必须指定格式
格式符:
%c:显示字符的ASCII码
%d, %i:显示十进制整数
%e, %E:显示科学计数法数值
%f:显示为浮点数 %g,
%G:以科学计数法或浮点形式显示数值
%s:显示字符串
%u:无符号整数
%%:显示%自身
#[.#] 第一个数字控制显示的宽度;第二个#表示小数点后精度,如:%3.1f
- 左对齐(默认右对齐) 如:%-15s
+ 显示数值的正负符号 如:%+d
模式匹配符
~ 左边是否和右边匹配,包含关系
!~ 是否不匹配
逻辑操作符:
与:&&,并且关系
或:||,或者关系
非:!,取反
数组
awk的数组是关联数组
由于awk本体就有循环,所以 awk ‘{count[$1]++}‘ 就可获取隔行第一列组成的数组,使用for循环输出
统计数量并输出:
awk ‘{count[$1]++}END{for(i in count){print i,count[i]}}‘ | file
原文:https://www.cnblogs.com/zy2271/p/12901697.html