博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
awk 常用方法
阅读量:6537 次
发布时间:2019-06-24

本文共 1285 字,大约阅读时间需要 4 分钟。

hot3.png

1、字符替换

echo "a b c 2011-11-22 a:d" | awk '{gsub(/[ab]/,"",$0);print $0}' 使用正则语法把a或b字符替换成空字符

$0指取当前行作为字符串处理 ,awk命令默认使用空格字符分隔处理

注意gsub的返回结果是 替换次数,  $0被替换完后还是存放在$0中,下一命令行print可以取正确结果

2、字符分隔

dstat| awk -F "[ |]+" 使用正则语法分隔处理行,把空格或|字符都当前当前行处理

3、日期打印

echo "a b c 2011-11-22 a:d" | awk '{print strftime("%y-%m-%d %T",systime());}'

输出结果为15-02-10 16:02:19,systime()为取系统当前时间,有或没有结果都一样,strftime()默认取当前时间

4、if else

dstat| awk -F "[ |]+" '{if(match($10, "M")>=1){gsub(/[MkB]/,"",$10);recv+=$10;}else if(match($10, "k")>=1){gsub(/[MkB]/,"",$10);recv+=$10/1024;}; print recv}'

match为匹配字符串是否出现

5、命令换行 使用\,与C++语法一样

#!/bin/bash

dstat| awk -F "[ |]+" 'BEGIN{max=0;count=0;curr=300}{ \
if(match($0, "total")<=1 && match($0, "idl")<=1){count++;sysc+=$1+$2;max=(($1+$2) >max ?($1+$2):max);\
if(match($10, "M")>=1){gsub(/[MkB]/,"",$10);recv+=$10;}else if(match($10, "k")>=1){gsub(/[MkB]/,"",$10);recv+=$10/1024;} \
if(match($11, "M")>=1){gsub(/[MkB]/,"",$11);send+=$11;}else if(match($11, "k")>=1){gsub(/[MkB]/,"",$11);send+=$11/1024;} \
};if(count%curr==0){ \
{now=strftime("%y-%m-%d %T",systime());}{print now,"sysc=",sysc/curr,"Max=",max,"recv=",recv/curr,"send=",send/curr >> "/usr/local/nds/log/dstat2015.log";fflush(stdout)};sysc=0;max=0;recv=0;send=0 }}'

转载于:https://my.oschina.net/u/2271251/blog/377368

你可能感兴趣的文章
(转)关于如何学好游戏3D引擎编程的一些经验
查看>>
使用Kotlin为你的APP自定义一个统一的标题栏
查看>>
EF各版本增删查改及执行Sql语句
查看>>
拓扑排序
查看>>
jQGrid API
查看>>
Bzoj1758: [Wc2010]重建计划
查看>>
redis集群部署及踩过的坑
查看>>
j2EE监听器-listener
查看>>
使用pip命令报You are using pip version 9.0.3, however version 18.0 is available pip版本过期.解决方案...
查看>>
(转)LINQ之路
查看>>
Django REST框架--关系和超链接api
查看>>
双击防止网页放大缩小HTML5
查看>>
C#的一些学习方法
查看>>
iOS开发-开发总结
查看>>
c++中的 Stl 算法(很乱别看)
查看>>
U3D Invoke() IsInvoking CancelInvoke方法的调用
查看>>
Javascript 如何生成Less和Js的Source map
查看>>
中间有文字的分割线效果
查看>>
<悟道一位IT高管20年的职场心经>笔记
查看>>
volatile和synchronized的区别
查看>>