文章转自 http://www.cnblogs.com/zhuyp1015/archive/2012/07/14/2591822.html

前一篇学习了awk的基本知识,现在来做一些练习加深一下印象。

假设我们有这样一个待处理的文件"grade.txt":

M.Tansley     05/99     48311     Green     8     40     44
J.Lulu     06/99     48317     green     9     24     26
P.Bunny     02/99     48     Yellow     12     35     28
J.Troll     07/99     4842     Brown-3     12     26     26
L.Tansley     05/99     4712     Brown-2     12     30     28
 
#打印整个文件
$ awk '{print $0}' grade.txt
M.Tansley       05/99   48311   Green   8       40      44
J.Lulu          06/99   48317   green   9       24      26
P.Bunny         02/99   48      Yellow  12      35      28
J.Troll         07/99   4842    Brown-3 12      26      26
L.Tansley       05/99   4712    Brown-2 12      30      28
 
#打印第一和第四个域
$ awk '{print $1,$4}' grade.txt
M.Tansley Green
J.Lulu green
P.Bunny Yellow
J.Troll Brown-3
L.Tansley Brown-2
 
#打印表头
$ awk 'BEGIN {print "Name            Belt\n---------------------------"}
> {print $1"\t"$4}' grade.txt
Name            Belt
---------------------------
M.Tansley       Green
J.Lulu  green
P.Bunny Yellow
J.Troll Brown-3
L.Tansley       Brown-2
 
正则表达式相关
为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用 i f语句。awk中if后面的条件用()括起来。
#下面代码打印$4 包含 Brown 的行
 
$ awk '$4~/Brown/ {print $0}' grade.txt
J.Troll         07/99   4842    Brown-3 12      26      26
L.Tansley       05/99   4712    Brown-2 12      30      28
 
#非精确匹配
$ awk '$3 ~/48/ {print $0}' grade.txt
M.Tansley       05/99   48311   Green   8       40      44
J.Lulu          06/99   48317   green   9       24      26
P.Bunny         02/99   48      Yellow  12      35      28
J.Troll         07/99   4842    Brown-3 12      26      26
 
#精确匹配
$ awk '$3=="48" {print $0}' grade.txt
P.Bunny         02/99   48      Yellow  12      35      28
 
 
#不匹配 使用 ‘!~’
$ awk '$0 !~ /Brown/' grade.txt
M.Tansley       05/99   48311   Green   8       40      44
J.Lulu          06/99   48317   green   9       24      26
P.Bunny         02/99   48      Yellow  12      35      28
 
$ awk '$4 != "Brown-2" {print $0}' grade.txt
M.Tansley       05/99   48311   Green   8       40      44
J.Lulu          06/99   48317   green   9       24      26
P.Bunny         02/99   48      Yellow  12      35      28
J.Troll         07/99   4842    Brown-3 12      26      26
 
#小于
$ awk '$6 < $7 {print $0 "$1 Try better at the next comp"}' grade.txt
M.Tansley       05/99   48311   Green   8       40      44$1 Try better at the next comp
J.Lulu          06/99   48317   green   9       24      26$1 Try better at the next comp
 
#设置大小写
$ awk '/[Gg]reen/' grade.txt
M.Tansley       05/99   48311   Green   8       40      44
J.Lulu          06/99   48317   green   9       24      26
 
#匹配第一个域的第四个字符是‘a’
$ awk '$1 ~/^...a/' grade.txt
M.Tansley       05/99   48311   Green   8       40      44
L.Tansley       05/99   4712    Brown-2 12      30      28
 
#'或'匹配,使用 ‘|’ ,需使用括号括起来
$ awk '$0 ~/(Yellow|Brown)/' grade.txt
P.Bunny         02/99   48      Yellow  12      35      28
J.Troll         07/99   4842    Brown-3 12      26      26
L.Tansley       05/99   4712    Brown-2 12      30      28

(转)awk实例练习(一)的更多相关文章

  1. Awk 实例

    AWK 是一种用于处理文本的编程语言工具.AWK 在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法.它的设计思想来源于 SNOBOL4 .sed .Marc Rochki ...

  2. (转)awk实例练习(二)

    文章转自 http://www.cnblogs.com/zhuyp1015/archive/2012/07/14/2591842.html 先来总结一下awk内置变量: ARGC          命 ...

  3. awk实例

    AWK-F 以XX为分割df -lh | grep boot | awk '{print $5}' | awk -F '%' '{print $1}'grep "bash" /et ...

  4. awk系列:在awk中如何使用流程控制语句

    导读 当你回顾所有到目前为止我们已经覆盖的 awk 实例,从 awk 系列的开始,你会注意到各种实例的所有指令是顺序执行的,即一个接一个地执行.但在某些情况下,我们可能希望基于一些条件进行文本过滤操作 ...

  5. awk命令

    awk 手册   原文 Table of Contents 1. awk简介 2. awk命令格式和选项 2.1. awk的语法有两种形式 2.2. 命令选项 3. 模式和操作 3.1. 模式 3.2 ...

  6. awk笔记

    http://www.cnblogs.com/zhuyp1015/archive/2012/07/14/2591842.html awk实例练习 http://www.cnblogs.com/repo ...

  7. Linux常用命令之awk

    标题:awk命令的使用 作用:awk是非常好用的数据处理工具,主要处理每一行的字段内的数据,默认的字段的分割符为空格键或[tab]键 一.awk脚本的基本结构: awk 'BEGIN{print &q ...

  8. shell编程awk进阶

    awk操作符 算术操作符:  x+y, x-y, x*y, x/y, x^y, x%y      -x: 转换为负数      +x: 转换为数值 字符串操作符:没有符号的操作符,字符串连接 赋值操作 ...

  9. shell编程awk基础介绍

    awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理    读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行.    awk里面的换行 ...

随机推荐

  1. Session 知识点再整理(二) 自定义 Session 存储机制

    对于访问量大的网站,用默认的 Session 存储方式(以文件存储)不适合,因为文件的 I/O 开销会非常大,另外 Session 机制本身使 Session 不能跨机访问,在 Web 集群中无法达到 ...

  2. Memcached 笔记与总结(9)Memcached 与 Session

    一.Memcached 存储 Session 由于 Memcached 是分布式的内存对象缓存系统,因此可以用来实现 Session 同步:把 Web 服务器中的内存组合起来,成为一个“内存池”,不管 ...

  3. 一些asp.net使用

    1.英文格式的日期转为中文格式 eg:string englishDate="03-04-2012"; string chineseDate=Regex.replace(engli ...

  4. TOMCAT启动时报错:the CATALINA_HOME environment variable is not defined correctly

    运行tomcat/bin目录下的startup.bat时报错:the CATALINA_HOME environment variable is not defined correctly 碰到这个问 ...

  5. Golang之sdl2学习之路(零) -- 环境工具准备

    学习Golang有一段时间了,从毫无头绪到四处乱撞,再到如今静下心来安心学习sdl2也有小半年了. 今晚重构之前的学习代码,发现如果不写该文,可能会在以后回顾这段时间写的代码上花费时间,故以此文做一点 ...

  6. LightOj 1213 - Fantasy of a Summation(推公式 快速幂)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1213 #include <stdio.h> int cases, case ...

  7. Oracle中用户的基本操作

    创建用户 1.首先登陆到系统用户sys(sys用户具有创建用户的权限). 2.然后在代码编辑框写入创建用户的代码. 语法:CREATE USER user_name IDENTIFIED BY pas ...

  8. Extjs 表格横坐标显示问题

    在项目中显示chart时,当横坐标的标签名称过长时,extjs会自动隐藏部分的标签. 我想,如果能让标签斜着,或者纵向显示的话,就能够节省x轴上的长度. 经过在网上查找,解决方案如下. //在表格的a ...

  9. [BS-29] 给UIView添加背景图片

    给UIView添加背景图片 //默认情况下只能设置UIView的背景颜色,不能给UIView设置背景图片,但通过绘图知识可以做到 - (void)drawRect:(CGRect)rect { [su ...

  10. RDIFramework.NET V2.9版本多语言的实现

    RDIFramework.NET V2.9版本多语言的实现 现在是国际化时代,软件也不能落后.一个公司里很可能会有老外,也可能有台湾的朋友,他们用软件的习惯都不一样,若同样一个软件同时能适应多种语言文 ...