awk用法
16lz
2021-01-22
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'ls -lh | awk '{print $1}'netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' #计算访问数统计
在这里awk 后面没有BEGIN和END,跟着的是pattern,也就是每一行都会经过这个命令,在awk中$n,表示第几列,在这里表示打印每一行的第一列。
$0 当前记录(这个变量中存放着整个行的内容)
$1~$n 当前记录的第n个字段,字段间由FS分隔
FS 输入字段分隔符 默认是空格或Tab
NF 当前记录中的字段个数,就是有多少列
NR 已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。
FNR 当前记录数,与NR不同的是,这个值会是各个文件自己的行号
RS 输入的记录分隔符, 默认为换行符
OFS 输出字段分隔符, 默认也是空格
ORS 输出的记录分隔符,默认为换行符
FILENAME 当前输入文件的名字
awk '{for(i=N+1;i<=NF;i++)printf $i " ";printf"\n"}' file #打印n列后面的所有列awk '{$1="";print $0}' #打印除每一列的所有列 awk '{$NF="" ;print $0}' #显示最后一列
%c:显示字符的ASCII码
%d, %i:显示十进制整数
%e, %E:显示科学计数法数值
%f:显示为浮点数
%g, %G:以科学计数法或浮点形式显示数值
%s:显示字符串
%u:无符号整数
%%:显示%自身
#[.#] 第一个数字控制显示的宽度;第二个#表示小数点后精度,%3.1f
左对齐(默认右对齐) %-15s
- 显示数值的正负符号 %+d
哪个在前先算哪个
操作符
算术操作符:
x+y, x-y, x*y, x/y, x^y, x%y
- x:转换为负数
+x:将字符串转换为数值
字符串操作符:没有符号的操作符,字符串连接
赋值操作符:
=, +=, -=, *=, /=, %=, ^=,++, --
下面两语句有何不同
awk ‘BEGIN{i=0;print ++i,i}’awk ‘BEGIN{i=0;print i++,i}’操作符
比较操作符:
==, !=, >, >=, <, <=
~:左边是否和右边匹配
!~:是否不匹配
awk '$0 !~ /root/‘ /etc/passwdawk -F: '$0 ~ /root/{print $1}‘ /etc/passwd
更多相关文章
- java8中的一个骚操作-方法引用(使代码看起来很高大上)
- 整理了一套操作系统常见的面试题,不管你是面试大厂还是小厂都足够
- mysql从入门到优化(3)事务的基本操作
- mysql从入门到优化(1)基本操作上
- mysql从入门到优化(4)视图的基本操作
- mysql从入门到优化(2)数据的增删改查操作总结
- 2.20 从本质上理解虚拟机快照以及操作演示
- Java中使用Jedis操作Redis