awk命令
通常来说 我们使用grep即可满足我们大多数的需求了,但是还是有一些情况,grep是解决不了问题的,如我们的日志中有服务的响应时间,想过滤出响应时间超过200ms掉日志,这时候用grep就很难做到了。所以,很多时候我们还会使用到awk命令,awk命令是一个功能十分强大的命令,学会awk命令对我们解决问题有很大帮助。说到这里可能有人会想到sed命令,sed命令常常作用于一整行的处理,awk则比较倾向于将一行分成数个字段来处理,目前我遇到的情况还是awk使用的频率要高很多。一.语法:awk '条件类型1 {动作1} 条件类型2 {动作2}...' filename
awk后面接两个单引号并加上大括号{}来设置想要对数据进行的处理动作。awk可以处理后续接的文件,也可以读取来自前个命令的输入。awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[tab]键。二.使用介绍
举例:9#7#0#0#0#0#127.0.0.1#KBIH8I09CJK09BN89HILIBHKKXZV8OU##-1#null#4.9#null#null#0befb78b1527676906653这里我想取出文件名为test.log中的ip 127.0.0.1的话 可以使用awk -F '#' '{print $7}' test.log 这里的 -F ‘#’表示将这个字符串按照#分隔 如果不使用-F 则使用默认空格符分隔 分隔后打印第7条 这里如果是$0表示整行 所以具体分隔内容是从1开始,如果我们想取出第二个数字 这里是7 大于200的情况 可以使用awk -F '#' '{(if($2==7) {print $0})}',这样如果日志中存在第二个数字等于7的时候 就打印整行日志
三.awk的处理流程是
1.读入第一行,并将第一行的数据填入$0,$1,$2等变量中
2.依据条件类型的限制,判断是否需要进行后面的动作
3.做完所有的动作与条件类型
4.若还有后续的"行"的数据,则重复1-3步骤,直到所有数据都处理完
四.awk中的内置变量
NF 每一行拥有的字段综述
NR 目前awk处理的是第几行数据
FS 目前的分隔字符 默认是空格键
五.awk的逻辑运算符
逻辑运算符主要包括 > < >= <= == != 很好理解,不做说明了 主要是==需要注意下
六.注意事项
1.所有awk的动作,即在{}内的动作,如果有需要多个命令辅助时,可利用';'间隔,或者直接以回车键隔开每个命令
2.逻辑运算中,等号需要使用==两个等号
3.格式化输出时,在printf的格式设置当中,务必加上\n,才能进行分行
4.与bash,shell的变量不同,awk中的变量可以直接使用,不需要加$符号
除此之外,awk还支持循环计算,感兴趣的可以学习下。
参考:鸟哥的私房菜
文章最后发布于: 2018-06-02 13:38:24
相关阅读
@echo off echo start copy? pause CHCP 65001 xcopy /s/y/i/f "D:\工作周报\*.xlsx" "D:\工作周报1" pause保存为一个 auto
1.File Zilla File Zilla是一个开源的,跨平台的Linux FTP客户端。File Zilla有一个标签式的用户界面,允许用户查看正在传输的
为什么linux安装程序 都要放到/usr/local目录下
Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/W
两行命令查看电脑wifi密码
web3j的完全jar文件分发包对每一次发布都提供命令行工具。命令行允许你从终端(terminal)使用web3j的一些功能: 这些工具提供: 钱包