awk 学习笔记

格式:

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

 

 

posted @ 2020-05-16 18:42  天际之上可有蓝天  阅读(141)  评论(0)    收藏  举报