awk命令使用经验
1.为什么要使用awk
举一个简单的例子,作为一个java开发人员,在查看日志服务器(即时保存所有线上环境的日志)上的日志的时候,由于部署了服务的服务器不止一台,当想要查找某一个特定信息的时候,由于不清楚该特定信息在那台服务器上,所以一般都是全量的搜的
比如
grep 'specialInfo' /project/myApplication/10.*/log/info.log
或者想要追踪是否某一台服务器才产生某信息时
tail -f /project/myApplication/10.*/log/info.log |grep 'specialInfo'
好的,现在我们能找到具体的这个信息出现时的日志了。
但是,这个日志是在哪个ip的服务器上啊....
简单的命令这时候好像不能满足这个需求。而产生线上问题的时候,往往时间都很宝贵,需要迅速定位问题的原因以及问题的影响
所以我觉得掌握一些能够快速筛选日志的手段还是很有必要的
而awk则是对日志这个具有规则的文本进行筛选的一个很好的手段
2.awk基础
awk 支持以制定的分隔符将一行文本切成多段 默认是使用空格作为分隔符 也可以通过-f命令来进行替换 例如awk -f, 则以逗号作为分隔符
分隔后的文本可以用符号来表示 $0 表示整行 $1表示分割后的第一段文本 $2表示第二段 依次类推,



NF是代表该行的数量 那么用NF-1就能取到倒数第二列

以上是最基础的,那么接下来我们想找一下第二列大于15的行的第三列 两种方式都可以起到过滤的作用


awk中 如果用BEGIN{命令1}{命令2}{命令3}End{命令4}的话 1会首先执行,2和3 会对每行输入执行,4则会最会执行

命令是以花括号来分隔的,可以进行嵌套 下面的 BEGIN{{命令1}{命令2}}

再来一个比较有用的 awk -v 可以设置变量 下面就是当第二列大于15的时候 i会增加1 每行都打印

正则表达式
~ \regex\ ~! \regex\


~是包含 ~! 是不包含
再来个统计
sum 下面利用sum数组 统计第一列都有哪几种,出现了几次

awk还有很多其他的功能,以后用到了再在这个补充,基础部分我就简单写这么一点
3.awk实际应用
有了上面的基础,解决1中的问题就很简单了
1、tail -f 多个文件时查看文件的具体路径
tail -f 多个文件时,在切换文件的时候会首先打印 ==> fileName<==
那么就利用这一点
tail -f ../project/myApp/10.*/log/cron.log |awk '$1 ~/==>/{i=$2} {print $0"--------"i}'
上面这行命令就是在输出中定义一个变量 i 然后当行里面有==>时,将文件路径保存在i中, 然后打印每一行的内容,后缀加上文件名,这样每当切换文件的时候i就会更新,就能够实现功能
2、cat 多个文件的时候查看文件的路径 和上面的类似,直接读内联变量FILENAME 就可以了,grep继续查找要找的内容
awk '{i=FILENAME} {print $0"--------"i}' ../project/facrm.ms.netease.com/10.*/log/*.log |grep find
3、查找某个文件中包含某个字符串 且不包含某个字符串 并统计这种的数量
判断第一列包含1然后所有行不包含6 统计整列出现的次数
awk '{if($1 ~/1/){if($0 ~! /6/){sum[$0]++}}}END{for(i in sum){print i,sum[i]}}' test
这种感觉存着比较好,之后稍微改改直接用,之后有业务场景了在补充啦
awk命令使用经验的更多相关文章
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- awk命令详解
搜索 纠正错误 添加实例 awk 文本和数据进行处理的编程语言 补充说明 awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件 ...
- Linux安全基础:awk命令的使用
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- AWK命令学习
使用方法 awk 'pattern {action}' {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到 ...
- awk 命令
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- AWK命令的用法
1.awk命令简介: awk是一种可以处理数据.产生格式化报表的语言,功能十分强大. awk的工作方式是读取数据,将每一行数据视为一条记录(record)每笔记录以字段分隔符分成若干字段,然后输出各个 ...
- [Linux] linux awk命令详解
reference : http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于g ...
- awk命令简单介绍
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- Linux的awk命令
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
随机推荐
- 20 常用模块 hashlib hmac:加密 xml xlrd xlwt:excel读|写 configparser subprocess
hashlib模块:加密 加密: 1.有解密的加密方式 2.无解密的加密方式:碰撞检查 hashlib -- 1)不同数据加密后的结果一定不一致 -- 2)相同数据的加密结果一定是一致的 import ...
- JavaScript入门学习笔记(二)
JavaScript运算符: 算术运算符.赋值运算符和字符串连接运算符. 算法运算符与复制运算符用法参照Java: 字符串运算符: +运算符用于把文本值或字符串变量连接起来,适用于两个或更多字符串变量 ...
- MySQL/MariaDB数据类型
1.为什么要定义MySQL数据类型 定义MySQL数据类型其实就是为了对数据进行分类,实现对不同的分类进行不同的处理 1.使系统能够根据数据类型来操作数据. 2.预防数据运算时出错.例如,通过强大的数 ...
- js 校验 btc eth 地址
NPM 安装 npm install wallet-address-validator Browser <script src="wallet-address-validator.mi ...
- 如何使用 Lucene 做网站高亮搜索功能?
现在基本上所有网站都支持搜索功能,现在搜索的工具有很多,比如Solr.Elasticsearch,它们都是基于 Lucene 实现的,各有各的使用场景.Lucene 比较灵活,中小型项目中使用的比较多 ...
- 五分钟快速掌握RPC原理及实现
随着公司规模的不断扩大,以及业务量的激增,单体应用逐步演化为服务/微服务的架构模式, 服务之间的调用大多采用rpc的方式调用,或者消息队列的方式进行解耦.几乎每个大厂都会创建自己的rpc框架,或者基于 ...
- python经典书籍推荐:python编码规范
目录INF-qa Python 编码规范................................................................................ ...
- SpringCloud使用Nacos服务发现实现远程调用
本文使用SpringCloud结合Nacos服务发现,Feign远程调用做一个简单的Demo. 1 Nacos 关于Nacos之前写了两篇文章关于SpringBoot对它的使用,感兴趣可以查看一下. ...
- Python数据分析基础PDF
Python数据分析基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1ImzS7Sy8TLlTshxcB8RhdA 提取码:6xeu 复制这段内容后打开百度网盘手 ...
- Python编程中出现ImportError: bad magic number in 'numpy': b'\x03\xf3\r\n'
在终端输入ls -a 会出现一个.pyc的文件,将文件删掉