shell脚本学习笔记 (文本处理器AWK)
来源:互联网 发布:全景漫游制作软件 编辑:程序博客网 时间:2024/06/10 21:15
既然说到了shell和正则表达式,那么不得不简单的提提AWk工具。AWK是一种优良的文本处理工具,它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。AWK 提供了极其强大的功能:可以进行样式装入、 控制流、数学运算符、进程控制语句甚至于内置的变量和函数。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
之前说到了sed工具,sed工具的功能已经很强大了,为什么还要说awk呢?awk擅长从格式化报文或从一个大的文本文件中抽取数据,而且awk比sed强的地方在于不仅能以行为单位还能以列为单位处理文件,所以说如果文件是格式化的,即由分隔符分为多个域的,优先使用awk。下面就简单说一说awk工具吧.
AWK的基本命令行格式如下:
awk option 'script' file1 file2 ...
awk option -f scriptfile file1 file2 ...
AWK的编辑行格式如下:
/pattern/{actions} (patten部分为正则表达式)
condition{actions} (满足某个条件的部分执行action)
首先写两个简单的例子来熟悉一下AWK的简单用法吧!
第一个例子要说明的是,AWK默认的域分隔符是"空格"或"table",且:$0--表示所有域,$1--表示第一个域,$2--表示第二个域。另外可以观察到 AWK工具的语法接近C语言;第二个例子看可以看出,满足成立后,后面的逻辑会被执行。
接下来就简单讲一下其他特性!
1.BEGIN和END
awk命令的condition部分还可以是两个特殊的condition:BEGIN和END,对于每个待处理文件:
BEGIN后面的actions在处理整个文件之前执行 一次
后面的END actions 在整个文件处理完之后执行一次
2.AWK按域搜索
我们可以看到,AWK以 : 作为分隔符,查找到满足条件的一行,然后打印出最后一个作用域的值,这样可用于提取重要信息,确实大大的简化了工作量,想一想用C语言什么的写一个程序出来该是多么的复杂啊
3.AWK脚本
上述脚本用于统计各个区间的数字出现的次数,测试的结果也在上面的图中显示出来了
4.AWK正则表达式的3中写法
1.正常的正则表达式
2.if语句构成的正则表达式
3.awk内置的正则表达式函数
上面就是三种正则表达式的写法
5.AWK的工作流程
这里主要说明一下AWK的工作流程:
awk工作流程是这样的:先执行BEGING,然后读取文件,读入有\n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。
6.awk内置变量&&杂项
我简单的列了一下,大概有以下这些,具体的使用需要多多的练习
ARGC 命令行参数个数
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F 选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
下面给出几个例子演示一下:
7.AWK工具的实际应用,快速解决实际问题
1.统计上级目录底下普通文件的个数
2.过滤掉4096的文件,统计文件的总大小
以上就是awk工具的简单介绍,我在这里只是简单的介绍了一点罢了, 其中以一些是还是比较复杂的,但是这还只是awk的冰山一角,awk的知识远远不止这些。从上面的例子中,我们可以看到awk能够解决的问题确实很多,所以我相信如果把awk这个工具学好了,他可以帮助我们解决很多问题的,只要你能想到的差不多都可以解决的(有点夸张了哈)。
0 0
- shell脚本学习笔记 (文本处理器AWK)
- Shell脚本写作:Awk学习笔记
- shell 脚本学习 awk
- Shell脚本学习笔记(七)--sed和awk
- Shell脚本学习笔记(七)--sed和awk
- Shell 脚本学习之awk
- shell编程笔记-文本处理awk
- shell编程笔记-文本处理awk
- Shell学习笔记(15)-awk
- shell脚本专家指南--单行文本处理awk
- Linux Shell 脚本应用——awk文本处理文件
- SHELL脚本,学习笔记
- shell脚本学习笔记
- shell 脚本学习笔记
- shell脚本学习笔记
- shell脚本学习笔记
- shell脚本学习笔记
- Shell脚本学习笔记
- ECSHOP 后台商家设置增加设置选项
- php header 无法跳转的问题
- ext3文件系统恢复被删文件
- CodeIgniter-3.0.0 Unable to locate the specified class: Session.php
- 通过uc_client接口方式,更新discuz会员头像
- shell脚本学习笔记 (文本处理器AWK)
- Html编码和Uri编码
- Linux安装MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar
- 多路径管理与UDEV服务解决方法(供参考)
- 给DotSpatial添加比例尺
- 【leetcode】25. Reverse Nodes in k-Group
- Android之生成桌面快捷方式
- 面试中常见链表问题9:对单链表进行插入排序
- WEB打印控件Lodop实现打印页面