10. shell_awk用法

1. awk介绍

  在计算内存使用率时,使用free -m会输出一堆流,需要使用grep,str,cut等命令去进行复杂的内容解析,最后再去计算使用率。
  但使用awk就会自动解析内容,每行一条记录,每列一个属性。行与行之间以回车符进行解析,列之间默认以空格或者回车分割去解析。

2. awk基本用法

2.1 awk命令

awk [option] [BEGIN]{program}END [file]

命令选项
-F 指定一行中各个字段的解析符   
		awk -F: {print $1} data.txt   #按冒号分隔去解析一行中的各个字段
-f 指定读取程序的文件名
-v 定义awk程序中使用的变量和默认值


awk程序运行优先级
	1)BEGIN 在开始处理流之前进行,优先级最高,可选项
	2)program 处理数据流,必选项
	3)END 处理完数据流后的操作,可选项

2.2 awk基本语法

2.2.1 对列提取

$0 所有列
$1 第一列
....
$NF 最后一列
------------------------------
awk '{print $5}' data.txt  #第5列
awk '{print $1,$3}' data.txt  #第1和3列,默认输出按空格分割
awk '{print $1 "-" $3}' data.txt  #第1和3列,输出按'-'分割

2.2.2 对行提取

awk 'NR==3{print $0}' data.txt  #提取第三行所有列
awk -F ":" 'NR==1{print $0}' data.txt #提取第一行所有列,按:解析列

3. awk高级用法

3.1 awk程序运行优先级

awk 'BEGIN{print "hello"}{print $0}END{print "end"}' data.txt
	1)BEGIN 在开始处理流之前进行,优先级最高,可选项
	2)program 处理数据流,必选项
	3)END 处理完数据流后的操作,可选项

3.2 awk定义数组

awk 'BEGIN{array[0]=100;array[1]=200;print array[0],array[1]}'

3.3 awk数学运算

  1. 赋值运算
  2. 比较运算
  3. 数学运算
  4. 逻辑运算
  5. 匹配运算

赋值运算

awk 'BEGIN{name="kkk";print name}'

比较运算

awk 'BEGIN{prnit "a" >= "b"}'

seq 1 10 > num
awk '$1>5{print $0}' num

数学运算

awk 'BEGIN{print 1+1}'
awk 'BEGIN{print 100/3}'
awk 'BEGIN{print 100>=2 $$ 100>=3}'
awk 'count=0' 'BEGIN{count++;print count}'

匹配运算

awk -F: '$1=="root"{print $0}' passwd
awk -F: '$1 ~ "ro"{print $0}' passwd #模糊匹配

3.4 环境变量

变量描述
FIELDWIDTHS以空格分隔的数字列表,用空格定义每个数据字段的精确宽度.
FS解析数据列与列的分隔符
OFS输出列与列的分隔符
RS输入一行记录分隔符
ORS输出一行记录分隔符
awk 'BEGIN{FILELDWIDTHS="5 2 8"}NR==1{print$1,$2,$3}' /etc/passwd
awk 'BEGIN{FS=":"}$1 ~"ro"{print $0}'
awk 'BEGIN{FS=":";OFS="\n"}$1 ~"ro"{print $0}'

4. awk流程控制

awk '{if ($1<5)print $1*2;else print $1/2}' num
awk '{sum=0;for (i=1;i<4;++i){sum+=i}print sum}' num

5. awk使用小技巧

打印test文本行数
awk 'END{print NR}' test

打印test文本最后一行内容
awk 'END{print $0}' test

打印test文本列数
awk 'END{print NF}' test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值