文档章节

awk 常用方法

 惊浪
发布于 2015/02/10 16:13
字数 396
阅读 128
收藏 16

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 }}'

© 著作权归作者所有

共有 人打赏支持
上一篇: nginx 配置说明
粉丝 16
博文 29
码字总数 17864
作品 0
福州
程序员
私信 提问
如何使用 awk 和正则表达式过滤文本或文件中的字符串

当我们在 Unix/Linux 下使用特定的命令从字符串或文件中读取或编辑文本时,我们经常需要过滤输出以得到感兴趣的部分。这时正则表达式就派上用场了。 什么是正则表达式? 正则表达式可以定义为...

开元中国2015
2016/07/19
48
0
linux取IP地址的多种方法

对于很多linux初学者,还有很多基础面试时,都会可能遇到需要提取IP地址的问题,下面我总结了多种取IP址的方法,希望大家能学到知识 如下图,我需要提取出eth0的IP地址 方法一:使用awk实现 ...

街角守望妳
2017/03/16
0
0
awk学习笔记

awk的工作流程: 将文件的一行读到内存,然后按分隔符将该行进行分段,其默认的分隔符是空格和TAB。 常用格式1: awk /pattern/ {command1;command2.....} file 用法1 指定分隔符 用-F'分隔符...

香胖
2015/12/04
47
0
五年屌丝运维工作shell精华

屌丝运维常用shell 列出你最常用的10条shell history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head history | awk '{a[$4]++}END{for(i in a){print a[$i] " " i......

a591244761
2014/07/03
0
0
grep、sed、awk和正则表达式

grep SYNOPSIS 常用选项 -A 显示改行和改行后的内容-B 显示改行和改行前的内容-C 显示该行和改行前后的内容-R/-r 递归,匹配目录-d 对指定目录进行相应的操作,read:读取目录下所有文件,r...

yr_linux运维
2017/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker搭建代码质量检测平台-SonarQube(中文版)

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量。通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言...

Jacktanger
16分钟前
0
0
Windows / Linux / MacOS 设置代理上网的方法汇总

本文汇总了 Windows / Linux / MacOS 设置代理上网的各种方法,总结如下: 1、设置系统代理(Windows、Linux、MacOS) 2、设置代理插件(Chrome、Chromium、Firefox、Opera、QQ等浏览器) 3、...

sunboy2050
昨天
2
0
自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
昨天
2
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
昨天
3
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部