awk学习[参考转载]
一.基本示例
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学习[参考转载]的更多相关文章
- sed学习[参考转载]
一.选项与参数: -n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者 ...
- 【转】awk学习笔记
Awk学习笔记 整理:Jims of 肥肥世家 <jims.yang@gmail.com> Copyright © 2004 本文遵从GPL协议,欢迎转载.修改.散布. 第一次发布时间:2 ...
- awk 手册--【转载】
1. 前言 有关本手册 : 这是一本awk学习指引, 其重点着重于 : l awk 适于解决哪些问题 ? l awk 常见的解题模式为何 ? 为使读者快速掌握awk解 ...
- stm32 学习参考(转)
源:stm32 学习参考 单片机裸机下写一个自己的shell调试器 LWIP_STM32_ENC28J60_NETCONN_TCP_SERVICER(5) LWIP_STM32_ENC ...
- Mongoose学习参考文档——基础篇
Mongoose学习参考文档 前言:本学习参考文档仅供参考,如有问题,师请雅正 一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model ...
- AWK高级编程 转载
AWK高级编程 转载 转载自:http://blog.csdn.net/wzhwho/article/details/5513791 1. 程序元素 一个awk 程序是一对以模式(pattern) 与 ...
- awk二十问-【AWK学习之旅】
---===AWK学习之旅===--- 一行命令: 1.打印输入每行的字段总数: 最后一行的字段总数:END{print NF} 每行都显示字段总数: {print NF} 2.打印指定行: aw ...
- awk十三问-【AWK学习之旅】
---===AWK学习之旅===--- 十三个常用命令行处理 [root@monitor awkdir]# cat emp.txt Beth 4.00 0 Dan 3.75 0 Kathy 4.0 ...
- awk分割列-【AWK学习之旅】
---===AWK学习之旅===--- awk 内置分割函数:split,将列按照指定分割符,分割成数组 用法:split(str1,array,"分隔符") 文件内容: [roo ...
随机推荐
- Linux环境下Node.js的安装配置
1. 官网下载Node.js 2. 安装Node.js 根据下载内容的不同,提供三种安装方法,选择自己喜欢的方式 2.1. 绿色免安装版(Linux(.tar.gz)) 解压Node-XX ...
- asp.net core web项目目录解读
Connected Services 和传统.net web项目相比,它的功能类似于添加webservice或者wcf service的引用.暂时用不到,有兴趣的小伙伴可以深入了解.右键这个目录可以看 ...
- 洛谷 P1004 方格取数 【多进程dp】
题目链接:https://www.luogu.org/problemnew/show/P1004 题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 ...
- 【jvm】来自于线上的fullGC分析
系统最近老年代的内存上升的比较快,三到四天会发生一波fullGC.于是开始对GC的情况做一波分析. 线上老年代2.7G,年轻带1.3G老年代上升较快,3天一波fullGC,并且fullGC会把内存回收 ...
- 谈谈MySQL无法连接的原因和分析方法
[可能的原因] MySQL无法连接的原因有很多,比如: 1.数据库的请求量突增,实例连接数超过max_connections,或用户连接数超过max_user_connections, 这种情况连接时 ...
- python 文本分类
python 文本分类 pyhton 机器学习 待续...
- loj#2665. 「NOI2013」树的计数
目录 题目链接 题解 代码 题目链接 loj#2665. 「NOI2013」树的计数 题解 求树高的期望 对bfs序分层 考虑同时符合dfs和bfs序的树满足什么条件 第一个点要强制分层 对于bfs序 ...
- Pyinstaller安装以及参数使用
一.安装 pip install pyinstaller (注:win7系统安装有pywin32依赖包,先按pywin32在进行以上的步骤) 二.参数说明(这里要注意大小写) -F 表示生成单个可 ...
- [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
2003的access数据库文件后缀是mdb2007的access数据库文件后缀是accdb 我装的access2010所以驱动程序选择“Microsoft Access Driver (*.mdb, ...
- tcp keepalive选项
之前一直对tcp keepalive选项理解有误, 以为通过setsockopt函数设置SO_KEEPALIVE和相关参数后该socket则使用设置的keepalive相关参数 否则使用系统默认的:k ...