一.基本示例

1.last -n 5 | awk '{print $1}'   $0代表全部

2.last -n 5 | awk -F:  '{print $1}'    -F代表设置分割符, :代表设置的分割符,也可以写成-F ':' (默认空格是分隔符)

3.last -n 5 | awk -F:  'BEGIN {print "name,shell"} {print $1} END {print "blue,/bin/nosh"}'

4.last -n 5 | awk '/admin/'   //表示正则

5.last -n 5 | awk '/^admin/{print $1}'

二.内置变量

ARGC               命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符 示例:last -n 5 | awk -F: '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}'

三.print和printf


print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。


printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

四.自定义变量

last -n 5 | awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}'

以上中,count就是自定义的变量

ls -l | awk 'BEGIN {size=0;} {size=size+$5} END {print "size is", size}'  某个文件夹中所有文件的字节数

ls -l | awk 'BEGIN {size=0;} {size=size+$5} END {print "size is", size/1024/1024, "M"}'  某个文件夹中所有文件的大小,单位为M

五.if判断(if, else if, else)

ls -l | awk 'BEGIN {size=0;} {if($5>120000){size=size+$5}} END {print "size is", size/1024/1024, "M"}'  某个文件夹中所有文件大小大于120000字节的文件的总大小

六.循环(awk中的循环语句同样借鉴于C语言,支持while、do/while、for、break、continue,这些关键字的语义和C语言中的语义完全相同)

last -n 5 | awk -F: 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}'   awk中的数组与变量都是自动创建的

ls -l | awk 'BEGIN {size=0;ind=0;con=""} {if($5>size){size=$5;ind=NR;con=$0}} END {print size, "index is ",ind,"content is",con}'

七.更多请参考

http://www.gnu.org/software/gawk/manual/gawk.html

示例:

cat /proc/meminfo|awk 'BEGIN{total=0;cached=0;free=0}{if(NR==1)total=$2;if(NR==2)free=$2;if(NR==4)cached=$2}END{print (free+cached)/total}'

 

awk学习[参考转载]的更多相关文章

  1. sed学习[参考转载]

    一.选项与参数: -n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者 ...

  2. 【转】awk学习笔记

    Awk学习笔记 整理:Jims of 肥肥世家 <jims.yang@gmail.com> Copyright © 2004 本文遵从GPL协议,欢迎转载.修改.散布. 第一次发布时间:2 ...

  3. awk 手册--【转载】

    1. 前言 有关本手册 : 这是一本awk学习指引,  其重点着重于 : l         awk 适于解决哪些问题 ? l         awk 常见的解题模式为何 ? 为使读者快速掌握awk解 ...

  4. stm32 学习参考(转)

    源:stm32 学习参考 单片机裸机下写一个自己的shell调试器     LWIP_STM32_ENC28J60_NETCONN_TCP_SERVICER(5)     LWIP_STM32_ENC ...

  5. Mongoose学习参考文档——基础篇

    Mongoose学习参考文档 前言:本学习参考文档仅供参考,如有问题,师请雅正 一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model ...

  6. AWK高级编程 转载

    AWK高级编程 转载 转载自:http://blog.csdn.net/wzhwho/article/details/5513791 1. 程序元素 一个awk 程序是一对以模式(pattern) 与 ...

  7. awk二十问-【AWK学习之旅】

    ---===AWK学习之旅===--- 一行命令: 1.打印输入每行的字段总数: 最后一行的字段总数:END{print NF} 每行都显示字段总数: {print NF}   2.打印指定行: aw ...

  8. awk十三问-【AWK学习之旅】

    ---===AWK学习之旅===--- 十三个常用命令行处理   [root@monitor awkdir]# cat emp.txt Beth 4.00 0 Dan 3.75 0 Kathy 4.0 ...

  9. awk分割列-【AWK学习之旅】

    ---===AWK学习之旅===--- awk 内置分割函数:split,将列按照指定分割符,分割成数组 用法:split(str1,array,"分隔符") 文件内容: [roo ...

随机推荐

  1. zookeeper在dubbo中干什么

    本文旨在表述出自己对于zookeeper在dubbo的作用的初步理解 在对dubbo进行了初步的探索后,对于zookeeper在其中的作用不甚了解,因为本身对zookeeper就没有一个特别具体的概念 ...

  2. BZOJ1150 [CTSC2007]数据备份Backup 贪心 堆

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1150 题意概括 数轴上面有一堆数字. 取出两个数字的代价是他们的距离. 现在要取出k对数,(一个数 ...

  3. BZOJ1079 [SCOI2008]着色方案 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1079 题目概括 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的 ...

  4. 【Java】 剑指offer(59-2) 队列的最大值

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请定义一个队列并实现函数max得到队列里的最大值,要求函数ma ...

  5. [OpenCV-Python] OpenCV 中的图像处理 部分 IV (六)

    部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 23 图像变换 23.1 傅里叶变换目标本小节我们将要学习: • 使用 OpenCV 对图像进行傅里叶变换 • ...

  6. Laravel 核心概念

    工欲善其事,必先利其器.在开发Xblog的过程中,稍微领悟了一点Laravel的思想.确实如此,这篇文章读完你可能并不能从无到有写出一个博客,但知道Laravel的核心概念之后,当你再次写起Larav ...

  7. python使用 requirements.txt 管理所需的包

    使用 requirements.txt 管理所需的包 2019/01/28 作者 若要与其他人共享项目.使用生成系统,或打算将项目复制到需要在其中还原环境的其他任何位置,必须指定项目需要的外部包. 建 ...

  8. POJ 3070 Fibonacci 【矩阵快速幂】

    <题目链接> Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 ...

  9. hdu 2167 方格取数 【状压dp】(经典)

    <题目链接> 题目大意: 给出一些数字组成的n*n阶矩阵,这些数字都在[10,99]内,并且这个矩阵的  3<=n<=15,从这个矩阵中随机取出一些数字,在取完某个数字后,该数 ...

  10. 洛谷 p1044 栈 【Catalan(卡特兰数)】【经典题】

    题目链接:https://www.luogu.org/problemnew/show/P1044 转载于:https://www.luogu.org/blog/QiXingZhi/solution-p ...