Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143943
  • 博文数量: 19
  • 博客积分: 216
  • 博客等级: 入伍新兵
  • 技术积分: 751
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-05 11:30
个人简介

欢迎喜欢linux技术的朋友共同交流

文章分类
文章存档

2018年(2)

2014年(5)

2013年(8)

2012年(4)

我的朋友

分类: LINUX

2013-12-03 11:52:30

一、index和substr函数

范例:ps aux|sort -nk 3|tail|awk 'NF>10 {a=index($0,$11);print $3,substr($0,a)}'

说明:当时为了收集服务器上比较消耗cpu的进程,写了这个任务,隔了两个月,忘记啥意思了,自己能写出这样的awk?简直不敢相信,反正就是不知道这个是什么意思,再查了资料后搞明白了

解释:
ps aux|sort -nk 3|tail 这个简单,就是查看所有进程,对cpu使用率的那一列进行排序,并显示倒数10行,那么久能看到当前消耗cpu最多的10个进程

awk 'NF>10 {a=index($0,$11);print $3,substr($0,a)}' 
1、这句a=index($0,$11)的意思就是在当前整行中,$11这列所处的位置,默认是从左边起算,固定的都是66个字符
2、这句print $3,substr($0,a)的意思是打印第三列和从整行的最左边起第a(也就是66)个字符及其最右边一直到$0结束的内容。加入不是$0,而是$2,那就是从$2起的第a个字符到$2结束的位置。
举个例子:
(1)我想打印abc 123456 def的数字那块内容,那就是echo "abc 123456 def"|awk '{print,substr($0,4)}',因为是截取$0的第四个字符一直到最后,所以返回123456 def;
(2)我想打印abc:123456:def的数字那块内容里面的后三个数,那就是echo "abc:123456:def"|awk -F\: '{print,substr($2,4)}',$2内容是123456,截取第四个字符到$2结束的位置,那么就返回456;
阅读(1513) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~