AWK---linux系统三剑客(三)
grep 、sed、awk被称为linux中的"三剑客"。
grep 更适合单纯的查找或匹配文本
sed 更适合编辑匹配到的文本
awk 更适合格式化文本,对文本进行较复杂格式处理
AWK是一种优良的文本处理工具
awk是linux中处理文本的强大工具,或者说是一种专门处理字符串的语言,它有自己的编码格式。awk的强大之处还在于能生成强大的格式化报告
使用方法 : awk '{pattern + action}' {filenames}
尽管操作可能会很复杂,但语法总是这样,programe 又分为 pattern 和 action ,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。
案例分析
数据链接 https://www.cnblogs.com/SliverLee/protected/p/11868443.html 密码 :123456
现有数据如下,求出Reason=1000时,Lefts字段值汇总。
1、从所有数据中,利用grep先过滤出 Reason=1000部分。
[root@localhost tmp]# more demotest.txt | grep Reason=1000
2、接下来就是awk的功能了
AWK常用参数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME
awk
浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
3、print和printf
默认空格分隔符
修改分隔符为 “ - ”,对比默认空格,很明显发现不同。
如根据多个分隔符进行分割呢?可以两次awk,但是我们可以一次告诉awk我们所有的分隔符,如-和|这两个,用[]包起来,想根据更多也可以继续加。
5、计算
根据前面的几个内容,我离最终的目的越来越近了,首先我先获取到Lefts这个列,分隔符为多个“-:,=”,
当Lefts值大于2000时,才输出
BEGIN与END
特殊模式 BEGIN 用于匹配第一个输入文件的第一行之前的位置, END 则用于匹配处理过的最后一个文件的最后一行之后的位置。这个程序使用 BEGIN 来输出一个标题:
下面求和
结合END,计算如下
最后结合之前所有的知识点总结一下:
最新文章
- NDK开发历程(一):android native code的调试方法
- 如何使用查尔斯代理抓取https请求
- jquery自定义函数的多种方法
- cat常用参数详解
- oracle-分页查询方案
- SparkStreaming+Flume出现ERROR ReceiverTracker: Deregistered receiver for stream 0: Error starting receiver 0 - org.jboss.netty.channel.ChannelException
- popen&;pclose管道方式操作shell命令
- google 开放I/O源码
- Enze fourth day(循环语句 一)
- 利用WebBrowser彻底解决Web打印问题
- nyoj_253:LK的旅行(旋转卡壳入门)
- Java基础点滴
- Activity 之使用
- java Web三大组件--过滤器
- OE1、OE2、ON1、ON2路由有什么区别?
- Tensorflow 的saved_model模块学习
- 单元测试,模拟用户Get登陆,并携带登录后的token访问接口
- bootstrap fileinput 文件上传
- 在word中输入任意角度旋转图片
- spring boot 2.0 源码分析(四)