awk基本用法

awk编程语言/数据处理引擎

创造者:Aho、Weinberger、Kernighan

基于模式匹配检查输入文本,逐行处理并输出

通常用在shell脚本中,获取指定的数据

单独用时,可对文本数据做统计

命令格式解析

主要用法

格式1:前置命令|awk [选项] '[条件]{指令}'

格式2:awk[选项]'[条件]{指令} '文件

awk '{print $1,$3}' test.txt

常用命令选项

-F:指定分隔符,可省略(默认空格或Tab位)

awk -F    :'{print $1,$3}' /etc/passwd

查看登录失败的IP地址有哪些

awk '/Failed/{print $11}' /var/log/secure

查看内存的剩余容量

free | awk '/Mem/{print $4}'

过滤网络流量

ifconfig eth0 | awk '/RX p/{print $5}'

awk内置变量

FS  保存或设置字段分隔符,例如FS=":",与-F功能一样

$n 指定分隔的第n个字段,如$1、$3分别表示第1、第3列

$0 当前读入的整行文本内容

NF 记录当前处理行的字段个数(列数)

NR 记录当前已读入行的数量(行数)

awk -F :'{print NR,NF}' /etc/passwd

awk -F:'{print $NF}' /etc/passwd  //输出每行的最后一个字段

awk -F:'{print "用户名:",$1,"解释器:",$7}'  /etc/passwd

awk过滤的时机

在所有行前处理,BEGIN{}

读入第一行文本之前执行

一般用来初始化操作

逐行处理,{}

逐行读入文本执行相应的处理

是最常见的编辑指令块

在所有行后处理,END{}

处理完最后一行文本之后执行

一般用来输出处理结果

awk过滤时机

awk 'BEGIN{A=34;print a+12}'   //预处理不需要数据文件

//统计使用bash的用户个数

awk 'BEGIN{x=0}/\<bash$/{x++} END{print x}'  /etc/passwd

//预处理时,行数为0

//全部处理完以后,行数为已读入文本的行数 

awk 'BEGIN{print NR} END{print NR}' m.txt

使用awk提取文本

条件设置示例

-/正则表达式

-~匹配、!~不匹配

//列出以ro开头的用户

awk -F: '/^ro{print}' /etc/passwd

//列出第7个字段不以bash结尾的用户名、登录Shell

awk -F:'$7!~/bash$/{print $1,$7}' /etc/passwd

条件设置示例

数值比较

==等于、!=不等于

awk 'NR==2{print}' reg.txt  //输出第2列文本

awk '$2!="xx"{print}' reg.txt //输出第2列不是xx的行

awk 'NF >=2{print}' reg.txt //输出包含2个及以上字段的行

多个条件比较测试

&&逻辑与:期望多个条件都成立

|| 逻辑或:只要有一个条件成立即可满足要求

//列出UID少于2的用户信息

awk -F:'$3>=0&&$3<2{print $1,$3}' /etc/passwd

//列出UID为1或7的用户信息

awk -F: '$3==1||$3==7{print $1,$3}' /etc/passwd

变量的运算

//输出奇数行文本

awk 'NR%2==1{print}' reg.txt

//统计文本的总字段个数

awk 'BEGIN{I=0}{i+=NF} END{print i}' reg.txt

//计算能同时被3和13整除的整数个数

seq 200 | awk 'BEGIN{i=0} ($0%3==0)&&($0%13==0){i++}END{print i}'




















  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐于技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值