LINUX之awk命令

awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息。通常,awk命令是以接收文件的一行为操作单位,每接收一行,然后执行相应的命令来处理文本。

使用方法:
awk 'pattern + action' {filename}

调用方式:
①命令行方式
awk [-F field-separator] 'commands' input-file(s)
②脚本方式
awk -f awk-script-file input-file(s)

内置变量:
ARGC     #命令行参数
ARGV     #命令行参数排列
ENVIRON     #支持队列中系统环境变量使用
FILENAME     #awk浏览的文件名
FNR     #浏览文件的记录数
FS     #设置输入域分隔符,等价于命令行-F
NF     #浏览记录的域个数
NR     #已读的记录数
OFS     #输出域分隔符
ORS     #输出记录分隔符
RS     #控制记录分隔符

awk操作符
= += *= /= %= ^=     #复制操作符
?     #条件表达操作符
|| && !     #或、与、非
~ !~     #关系操作符,如$4~/brown/为$4域包含brown
< <= == != >>     #关系操作符
++ --     #自加、自减

内置字符串函数:
gsub(r,s)     #在整个$0中用s替代r
gsub(r,s,t)     #在整个t中用s替代r
index(s,t)     #返回s中字符串t的第一位置
length(s)     #返回s长度
match(s,r)     #测试s是否包含匹配r的字符串
split(s,a,fs)     #在fs上将s分成序列a
sprint(fmt,exp)     #返回经fmt格式化
sub(r,s)     #用$0中最左边的最长的字串代替s
substr(s,p)     #返回字符串s中从p开始的后缀部分
substr(s,p,n)     #返回字符串s中从p开始长度为n的后缀

实例:
#输出passwd内容,以:分割
/etc> awk -F : '{print $1,$2,$3,$4,$5,$6,$7}' passwd
#同时打印行号
/etc> awk -F : '{print NR,$1,$2,$3,$4,$5,$6,$7}' passwd
#打印37~39行内容
/etc> awk -F : 'NR>=37 && NR<= 39 {print NR,$1,$2,$3,$4,$5,$6,$7}' passwd
#打印$1包含abc的
awk -F : 'NR>=37 && NR<= 40 {if($1~/abc/) print NR,$1,$2,$3,$4,$5,$6,$7}' passwd
#精确匹配$1为abc的
awk -F : 'NR>=37 && NR<= 40 {if($1=="abc") print NR,$1,$2,$3,$4,$5,$6,$7}' passwd
#查找磁盘使用率>85%号的
df -h|awk 'NR>=1 gsub("%","",$0) {if($5>=85)print $6,$5"%"}'
#打印指定行的日志
awk "NR>=1130178 && NR<=1130205" abc.log > ~/shellDemo/aaa.log


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值