粗谈awk
2016-04-22 16:36
127 查看
AWK的功能是什么?与sed和grep很相似,awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的 功能:它几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。 它具备了一个完整的语言所应具有的几乎所有精美特性。实际上,awk的确拥有自己的语言:awk程序设计语言,awk的三位创建者已将它正式定义为:样式 扫描和处理语言。(摘自鸟哥)。。。
调用awk的三种方式:
1 命令行方式
awk [-F field-separator] ‘commands’ input-file
其中,commands 是真正的awk命令, 参数-F是可选的, input-files是要处理的文件
参数:
-F 允许awk更改其子段分隔符。
-v $var=v 把v值赋值给var, 如果多个变量要赋值,就多写几个-v
2 shell脚本方式
即将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一般通过键入脚本文件名来调用
类似于shell首行的#!/bin/bash–>#!/bin/awk
3 将所有的awk命令插入一个大肚文件,然后调用
awk -f awk-script-file input-file(s)
-f profile 允许awk调用并执行profigure程序.
Example:
1 last -n 5 && last -n 5 | awk ‘{print $1}’
只显示最近登录的5个用户 ,
awk的工作流程为:读入有’\n’换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,0则表示所有域,0则表示所有域,1表示第一个域,n表示第n个域。默认域分隔符是"空白键"或"[tab]键",所以n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",所以1表示登录用户,3表示登录用户ip,以此类推。
2 nl /etc/passwd | awk -F ‘:’ ‘{print3表示登录用户ip,以此类推。
2 nl /etc/passwd | awk -F ‘:’ ‘{print 1}’
这种是awk+action的实例
3 nl /etc/passwd | awk -F ‘:’ ‘{print 1"\t"1 "\t" 7}’
4 还可以在行中添加列名shell名 以及添加最后一行
nl /etc/passwd | awk -F ‘:’ ‘BEGIN {print “name,shell”} {print 1"\t"1 "\t"7} END {print “ScySky,/bin/bash”}’
先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,0则表示所有域,0则表示所有域,1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。
这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)。搜索支持正则表达式,
PS: 未完待续 。。。。。。
调用awk的三种方式:
1 命令行方式
awk [-F field-separator] ‘commands’ input-file
其中,commands 是真正的awk命令, 参数-F是可选的, input-files是要处理的文件
参数:
-F 允许awk更改其子段分隔符。
-v $var=v 把v值赋值给var, 如果多个变量要赋值,就多写几个-v
2 shell脚本方式
即将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一般通过键入脚本文件名来调用
类似于shell首行的#!/bin/bash–>#!/bin/awk
3 将所有的awk命令插入一个大肚文件,然后调用
awk -f awk-script-file input-file(s)
-f profile 允许awk调用并执行profigure程序.
Example:
1 last -n 5 && last -n 5 | awk ‘{print $1}’
只显示最近登录的5个用户 ,
awk的工作流程为:读入有’\n’换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,0则表示所有域,0则表示所有域,1表示第一个域,n表示第n个域。默认域分隔符是"空白键"或"[tab]键",所以n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",所以1表示登录用户,3表示登录用户ip,以此类推。
2 nl /etc/passwd | awk -F ‘:’ ‘{print3表示登录用户ip,以此类推。
2 nl /etc/passwd | awk -F ‘:’ ‘{print 1}’
这种是awk+action的实例
3 nl /etc/passwd | awk -F ‘:’ ‘{print 1"\t"1 "\t" 7}’
4 还可以在行中添加列名shell名 以及添加最后一行
nl /etc/passwd | awk -F ‘:’ ‘BEGIN {print “name,shell”} {print 1"\t"1 "\t"7} END {print “ScySky,/bin/bash”}’
先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,0则表示所有域,0则表示所有域,1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。
这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)。搜索支持正则表达式,
PS: 未完待续 。。。。。。
相关文章推荐
- Improve OCR Accuracy on Color Documents
- 模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度
- iOS-使用第三方实现短信验证码功能
- codecs 组成
- 基于R-CNN的物体检测-CVPR 2014
- 最漂亮的人是为梦想而努力的人
- 1 余晟:程序员学英语三部曲
- socket通讯粘包问题
- 周杰伦、范冰冰、陈冠希、刘涛……为何对直播无法自拔
- HDU 4493 Tutor(四舍五入 模拟)
- C# Action<T>
- MFC-双缓冲绘图-CMemDC的封装
- C++技巧
- CRC16(modbus)校验
- 【初识MyBatis→简单的mybatis开发环境搭建】
- 移动端 触摸事件 ontouchstart、ontouchmove、ontouchend、ontouchcancel
- Object窥探
- 仿人人客户端的滑动效果
- hdu 1175 连连看 搜索—dfs
- 学生宿舍分配方案优化