粗谈awk

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, 1表示第一个域,nn"""[tab]", 1表示登录用户,3表示登录用户ip,以此类推。  
2 nl /etc/passwd | awk -F ‘:’ ‘{print
1}’
这里写图片描述
这种是awk+action的实例
3 nl /etc/passwd | awk -F ‘:’ ‘{print 1"\t" 7}’
这里写图片描述
4 还可以在行中添加列名shell名 以及添加最后一行
nl /etc/passwd | awk -F ‘:’ ‘BEGIN {print “name,shell”} {print 1"\t" 7} END {print “ScySky,/bin/bash”}’
这里写图片描述
这里写图片描述
先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,0, 1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。

这里写图片描述
这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)。搜索支持正则表达式,

PS: 未完待续 。。。。。。

发布了24 篇原创文章 · 获赞 4 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章