### Shell Awk脚本知识点总结 #### 一、Shell与Awk在文本处理中的应用 在日常工作中,尤其是在技术支持领域,经常会遇到需要处理文本文件的情况。无论是哪种类型的数据库,最终都可以将其导出为文本格式,这为我们提供了统一的处理方式。即使对特定数据库的操作不熟悉,也能通过文本文件对其进行处理。而在这一过程中,`shell`和`awk`是不可或缺的工具。 - **Shell**:Shell是一种命令行解释器,也是用户与操作系统之间的接口。它不仅用于执行系统命令,还能用来编写脚本来自动化一系列任务。 - **Awk**:Awk是一种强大的文本处理工具,适用于各种复杂的文本处理需求。它能够轻松地进行模式匹配、数据提取、数据转换等操作。 #### 二、Awk的基本用法 Awk的设计初衷是为了简化文本处理工作。下面将通过几个例子来展示如何使用awk进行基本的文本处理。 ##### 1. 输出每一行的第一个字段 ```bash [root@mail awk]# awk '{print $1}' example1.txt ``` 这里使用了`awk`的默认字段分隔符(空格或制表符),并打印出每一行的第一列。 `$1`表示第一列。 ##### 2. 条件筛选 假设我们需要筛选出第五列值大于20的行的第一列: ```bash [root@mail awk]# awk '{if ($5 > 20) {print $1}}' example1.txt ``` 这里使用了`if`语句来判断第五列的值是否大于20,如果是,则输出该行的第一列。 此外,还可以添加逻辑运算符来进行更复杂的条件判断: ```bash [root@mail awk]# awk '{if ($5 > 20 || $5 == 10) {print $1}}' example1.txt ``` 此命令会输出第五列值大于20或等于10的行的第一列。 ##### 3. Awk的控制结构 Awk支持多种控制结构,包括但不限于: - `if (condition) statement [else statement]` - `while (condition) statement` - `do statement while (condition)` - `for (expr1; expr2; expr3) statement` - `for (var in array) statement` - `break` - `continue` - `delete array[index]` - `delete array` - `exit [expression]` - `{statements}` 这些控制结构可以用来实现更复杂的数据处理逻辑。 #### 三、Awk脚本示例 接下来,我们将通过一个具体的awk脚本来进一步理解其使用方法。假设有一个文本文件`example2.txt`,内容如下: ``` user1:password1:username1:unit1:10 user2:password2:username2:unit2:20 user3:password3:username3:unit3:30 ``` 我们的目标是从这个文件中提取特定的信息,并按照一定的格式输出。 ```bash #!/bin/awk -f BEGIN { FS = ":"; } { print "add{"; print "uid=" $1; print "userPassword=" $2; print "domain=eyou.com"; print "bookmark=1"; print "voicemail=1"; print "securemail=1"; print "storage=" $5; print "}"; print "."; } END { print "exit"; } ``` 通过这个脚本,我们可以从`example2.txt`文件中提取出用户信息,并以一种特定的格式输出。 ```bash [root@mail awk]# awk -F':' '{print $1 "@" $2}' example2.txt ``` 此命令会输出每个用户的用户名和密码,中间用“@”分隔。 通过以上的介绍和示例,我们可以看到`shell`和`awk`在文本处理方面的强大功能。它们不仅可以帮助我们快速处理大量数据,还能让我们以更加灵活的方式定制输出结果。在实际工作中熟练掌握这两个工具将极大地提高工作效率。
作为技术支持工程我们最最经常的工作就是经常碰到要处理文本文件,不管是什么数据库最后都可以导成文本,我们就可以对他进行处理了,这样即使你不是对所有数据库操作都很熟悉也可以对他的数据进行处理了。
我们必须的工具有两个一个是shell一个是awk,awk对于处理文本文件是最最适合的掌握了awk我们就可以很方便的处理文本文件再借助一些shell命令我们可以很方便得到自己想要的结果。现在从简单的例子来总结一下我觉得会经常碰到的问题。
awk入门篇
awk入门,文本内容example1.txt.
user1 password1 username1 unit1 10
user2 password2 username2 unit2 20
user3 password3 username3 unit3 30
在unix环境中我们可以使用一下命令来打印出第一列
[root@mail awk]# awk '{print $1}' example1.txt
得到的结果是如下,解释一下"'{" 单引号大括号包含awk语句是为了和shell 命令区别,$1的意思就是文本文件的第一列,正常的awk命令跟随-F参数指定间隔符号,如果是空格或tab键就可以省略了。
user1
user2
user3
[root@mail awk]# awk '{if($5>20) {print $1}}' example1.txt
这行命令和上一行比较增加了“if($5>20)”,得到的结果是
user3
这个if语句就没有必要更详细的解释了吧!就是第5列大于20的显示出满足条件的第一列
[root@mail awk]# awk '{if($5>20 || $5==10) {print $1}}' example1.txt
user1
user3
在来一个初级的又增加了一个“if($5>20 || $5==10)” 做逻辑判断逻辑判断的三个“|| && !” 或、与、非三个可以任意加到里面,这个语句的意思是如果第5列大于20或者等于10的都显示处理,在我们的工作中可能有用户会要求找出所有空间大于多少的或者是空间等于多少的账户然后再做批量修改。
if是awk循环中的一个还有其他很多,man awk可以看到,
Control Statements
The control statements are as follows:
if (condition) statement [ else statement ]
while (condition) statement
do statement while (condition)
for (expr1; expr2; expr3) statement
for (var in array) statement
break
continue
delete array[index]
delete array
exit [ expression ]
{ statements }
学习awk可以经常使用一下man awk 可以看到所有的函数和使用方法。
了解每个符号的意义我们才能更好的使用awk,最开始先记住几个命令知道他可实现的结果我们慢慢的再去理解。
================================================================================
剩余10页未读,继续阅读
- mummy_delphi2013-10-10初级的好教材啊,很棒,了解到了awk,谢谢
- 粉丝: 0
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip