- 浏览: 738266 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
nmgrd:
赞一个,在分析AQS源码的博客当中,楼主是写的最细致,最易懂, ...
java并发编程--AbstractQueuedSynchronizer公平锁和非公平锁分析(三) -
ljzxloaf:
阻塞和等待不一样吧,condition持有等待队列,而AQS持 ...
java并发编程--AbstractQueuedSynchronizer加锁和解锁分析(二) -
DaCang4535:
楼主,不知道你那个book类有什么作用。setBook那个方法 ...
JAXB--简单应用(一) -
yuhui0531:
f-u-c-k!!!!!!!!!!!!!!!!!!!!!!!! ...
java线程常见的几种死锁模式和解决方法 -
刘文超:
form提交的几种方法
Awk是一种处理结构数据并输出格式化结果的编程语言, Awk 是其作者 "Aho,Weinberger,Kernighan" 的简称。
Awk通常被用来进行格式扫描和处理。通过扫描一个或多个文件中的行,查看是否匹配指定的正则表达式,并执行相关的操作。
Awk的主要特性包含:
1. Awk以记录和字段的方式来查看文本文件
2. 和其他编程语言一样,Awk 包含变量、条件和循环
3. Awk能够进行运算和字符串操作
4. Awk能够生成格式化的报表数据
Awk从一个文件或者标准输入中读取数据,并输出结果到标准输出中。
1. Awk的语法
- Syntax:
- awk '/search pattern1/ {Actions}
- /search pattern2/ {Actions}' file
在上诉语法中:
1. search pattern是正则表达式
2. Actions 输出的语法
3. 在Awk 中可以存在多个正则表达式和多个输出定义
4. file 输入文件名
5. 单引号的作用是包裹起来防止shell 截断
2. Awk的工作方式:
1) Awk 一次读取文件中的一行
2)对于一行,按照给定的正则表达式的顺序进行匹配,如果匹配则执行对应的 Action
3)如果没有匹配上则不执行任何动作
4)在上诉的语法中, Search Pattern 和 Action 是可选的,但是必须提供其中一个
5)如果 Search Pattern 未提供,则对所有的输入行执行 Action 操作
6)如果 Action 未提供,则默认打印出该行的数据
7) {} 这种 Action 不做任何事情,和未提供的 Action 的工作方式不一样
8) Action 中的语句应该使用分号分隔
创建一个包含下面内容的文本文件employee.txt 。后续的例子中将会用到该文件
- $cat employee.txt
- 100 Thomas Manager Sales $5,000
- 200 Jason Developer Technology $5,500
- 300 Sanjay Sysadmin Technology $7,000
- 400 Nisha Manager Marketing $9,500
- 500 Randy DBA Technology $6,000
3. Awk 的默认行为
默认的时候awk 打印文件中的每一行
- $ awk '{print;}' employee.txt
- 100 Thomas Manager Sales $5,000
- 200 Jason Developer Technology $5,500
- 300 Sanjay Sysadmin Technology $7,000
- 400 Nisha Manager Marketing $9,500
- 500 Randy DBA Technology $6,000
在上面的例子中,匹配的正则表达式未给出,因此后续的Action 适用所有的行, Action 中的 print 没有任何参数的情况下将打印整行,注意其中的 Action 必须使用 {} 括起来。
4. Awk打印匹配的行
- $ awk '/Thomas/
- > /Nisha/' employee.txt
- 100 Thomas Manager Sales $5,000
- 400 Nisha Manager Marketing $9,500
在上面的例子中,将打印包含Thomas 和 Nisha 的行,上面的列子包含两个正则表达式。 Awk 可以接受任意数量的正则表达式,但是每个组合 ( 正则表达式和对应的 Action) 必须用新行来分隔。
5. Awk仅打印指定的域
Awk包含许多内建的变量,对于每行的记录, Awk 默认按照空格进行分割,并将分隔后的值存入对应的 $n 变量中。如果一行还有 4 个单词,将被分别存储进 $1 $2 $3 $4 中,其中 $0 代表整行。 NF 也是一个内建的变量,代表该行中分割后的变量数。
- $ awk '{print $2,$5;}' employee.txt
- Thomas $5,000
- Jason $5,500
- Sanjay $7,000
- Nisha $9,500
- Randy $6,000
- $ awk '{print $2,$NF;}' employee.txt
- Thomas $5,000
- Jason $5,500
- Sanjay $7,000
- Nisha $9,500
- Randy $6,000
在上诉例子中$2 和 $5 分别代表名字和薪水,也可以使用 $NF 获得薪水,其中 $NF 代表最后一个字段,在打印语句中逗号是一个连接符号。
6. Awk开始和最后的动作
Awk包含两个重要的关键字 BEGIN 和 END
- Syntax:
- BEGIN { Actions}
- {ACTION} # Action for everyline in a file
- END { Actions }
- # Awk中的注释
在BEGIN 节中的 Actions 会在读取文件中的行之前被执行。
而END 节中的 Actions 会在读取并处理文件中的所有行后被执行。
- $ awk 'BEGIN {print "Name/tDesignation/tDepartment/tSalary";}
- > {print $2,"/t",$3,"/t",$4,"/t",$NF;}
- > END{print "Report Generated/n--------------";
- > }' employee.txt
- Name Designation Department Salary
- Thomas Manager Sales $5,000
- Jason Developer Technology $5,500
- Sanjay Sysadmin Technology $7,000
- Nisha Manager Marketing $9,500
- Randy DBA Technology $6,000
- Report Generated
- --------------
上述的例子为输出结果增加头和尾描述
7. Awk找出员工 ID 大于 200 的员工
- $ awk '$1 >200' employee.txt
- 300 Sanjay Sysadmin Technology $7,000
- 400 Nisha Manager Marketing $9,500
- 500 Randy DBA Technology $6,000
在上述例子中,$1 代表员工 ID ,如果员工 ID 大于 200 则执行默认的打印整行的 Action 。
8. Awk打印技术部员工
$4代表员工所在的部门,如果等于 Technology 则打印出整行
- $ awk '$4 ~/Technology/' employee.txt
- 200 Jason Developer Technology $5,500
- 300 Sanjay Sysadmin Technology $7,000
- 500 Randy DBA Technology $6,000
~操作符是和正则表达式中的值进行比较,如果匹配则打印整行
9. Awk打印技术部门的员工数
在下面的例子中,检查员工的部门是否是Technology ,如果是则递增 count 变量的值。 Count 变量的值在BEGIN 的 Actions 中被初始化为 0 。
- $ awk 'BEGIN { count=0;}
- $4 ~ /Technology/ { count++; }
- END { print "Number of employees in Technology Dept =",count;}' employee.txt
- Number of employees in Tehcnology Dept = 3
在处理的最后(END 的 Actions) ,仅仅打印出 Technology 部门的人数
转自:http://blog.csdn.net/andyxm/article/details/5964071
发表评论
-
linux时间操作
2012-01-12 10:45 3441一:直接调用系统变量 获得当前时间:date '+%Y-% ... -
linux的sort命令
2011-12-22 13:56 1374sort是在Linux里非常常用的一个命令,管排序的,集 ... -
用shell查看文件中是否包含某字符
2011-08-30 14:25 7584查看abc.txt文件中是否包含a字符 方法一: grep ... -
E297 交换文件写入错误解决办法
2011-08-19 11:09 3141今天用vi打开文件时总是报错:E297 交换文件写入错 ... -
linux服务和启动流程
2011-07-08 13:54 45531. linux服务(daemon):stand alo ... -
条件测试的标准
2011-07-07 17:20 1402条件测试的标准 Bash中允许测试两种类型的条件:命 ... -
linux目录结构
2011-07-07 16:57 0/ (这就是著 ... -
linux shell 动态生成 数组系列 seq使用技巧
2011-07-07 15:21 2281如果对linux shell 数组不是很熟悉的话 ... -
linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
2011-07-07 15:15 3879linux shell有一套自己的流程控制语句,其中包 ... -
linux shell 数组建立及使用技巧
2011-07-07 15:13 3135linux shell在编程方面比windows 批处理 ... -
linux shell “(())” 双括号运算符使用
2011-07-07 14:47 2915在刚开始学习inux shell脚本编程时候,对于它的 四 ... -
shell编程
2011-07-06 22:59 0http://blog.csdn.net/yuanfen127 ... -
shell中的特殊变量
2011-07-06 16:23 1141shell中的特殊变量: 变量名 含义 $0 ... -
shell常用语法总结
2011-07-06 16:30 33671 变量小结 1.1 变量显 ... -
shell script的追踪与调试
2011-07-06 13:53 1367shell脚本的追踪和调试 sh [-nvx] scr ... -
Linux Shell for循环写法总结
2011-07-06 10:25 0Linux Shell for循环写法总结 2011-0 ... -
使用lsof命令查看哪个进程占用某端口
2011-06-30 14:15 2643lsof简介 lsof(list open f ... -
Linux防火墙(iptables)的开启与关闭
2011-06-18 11:50 2464Linux防火墙(iptables)的开启与关闭 L ... -
如何解决linux下apache启动时httpd: apr_sockaddr_info_get() failed for 报错
2011-06-17 12:52 60391今天在家里的RHLE5.5上安装apache的时候, ... -
修改Linux中的主机名、如何查看Linux IP
2011-06-17 12:42 9507查询、修改主机信息 一、如何修改Linux主机名称 ...
相关推荐
awk 实例入门 教程 AWK_样式扫描和处理语言
awk 是一门编程语言,它的基本操作是在一组文件上查找模式,并在包含这些模式实例的那 些行或字段上进行指定的动作。awk 使得特定数据的选择和变换操作更易于表达
1. 前言 这是一本awk学习指引, 其重点着重于 : awk 适于解决哪些问题 ?...本手册为awk入门的学习指引, 其内容将先强调如何撰写awk程序,未列入进一步解题方式的应 用实例, 这部分将留待UNIX进阶手册中再行讨论.
awk 脚本 shell编程 实例教程 简单易懂
Awk 是一种名称奇怪但功能强大的语言。本文是一个包含三部分的系列的第一篇。在本文中, DanielRobbins 将使您迅速掌握 awk 编程技巧。随着本系列的进展,将讨论更高级的主题,最后将演示一 个真实的高级 awk 应用...
文章目录前言一、什么是shellshell脚本大白话二、shell常用操作三、文本处理三剑客 — 搜索工具grep1.什么是grep2.格式3.主要参数4.pattern正则表达式主要参数:5. grep使用实例四、文本处理三剑客 — 流编辑器sed1....
awk常用命令内容简介 内容简介 概述 变量 模式 动作 I/O 语句 函数 其他 限制 实例
目录网盘文件永久链接 01.BASH编写入门与实例 02.编写对话框的界面程序 03.与服务器交互的脚本 expect 04.BASH内置变量的使用 05.awk编程与应用
18.3.16 另一个拷贝实例 169 18.3.17 多个if语句 169 18.3.18 测试和设置环境变量 169 18.3.19 检测最后命令状态 170 18.3.20 增加和检测整数值 171 18.3.21 简单的安全登录脚本 172 18.3.22 elif用法 173 18.3.23 ...
C语言入门 C语言本质 Linux系统编程 28. 文件与I/O 1. 汇编程序的Hello world 2. C标准I/O库函数与Unbuffered I/O函数 3. open/close 4. read/write 5. lseek 6. fcntl 7. ioctl 8. mmap 29. 文件系统 1. 引言 2. ...
1、对操作系统中经常使用的一些命令sed、awk、find、grep、|等做了详细讲解 2、由浅到深的对shell编程进行讲解 3、书中有很多实例,可以加深我们对shell的理解
不是为了创作出一本shelI脚本编程的入门书。而是希望能够提供一些更具深度的内容。它的作用不仅仅是解释sheIl代码的内容,更在于讲述在大多数情况下如何以及为何使用某种特定的编程逻辑。这些脚本将帮助你大大提高...
4. 第一个程序 2. 常量、变量和表达式 1. 继续Hello World 2. 常量 3. 变量 4. 赋值 5. 表达式 6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义函数 3. 形参和实参 4. 全局变量、局部变量和作用域 4. 分支...
人们熟知的“hello,world”程序就是由本书首次引入的,现在,这一程序已经成为所有程序设计语言入门的第一课。 内容提要 -------------------------------------------------------------------------------- 《C...
Window及其他实用程序292 14.1X-Window292 14.1.1X-Window的特征292 14.1.2X-Window的工作方式293 14.1.3X-Window的组成部件294 14.1.4X-Window编程环境介绍295 14.2数据检索加工工具awk296 14.2.1awk基本描述296 ...