- 浏览: 743080 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 3495一:直接调用系统变量 获得当前时间:date '+%Y-% ... -
linux的sort命令
2011-12-22 13:56 1423sort是在Linux里非常常用的一个命令,管排序的,集 ... -
用shell查看文件中是否包含某字符
2011-08-30 14:25 7675查看abc.txt文件中是否包含a字符 方法一: grep ... -
E297 交换文件写入错误解决办法
2011-08-19 11:09 3240今天用vi打开文件时总是报错:E297 交换文件写入错 ... -
linux服务和启动流程
2011-07-08 13:54 46101. linux服务(daemon):stand alo ... -
条件测试的标准
2011-07-07 17:20 1457条件测试的标准 Bash中允许测试两种类型的条件:命 ... -
linux目录结构
2011-07-07 16:57 0/ (这就是著 ... -
linux shell 动态生成 数组系列 seq使用技巧
2011-07-07 15:21 2328如果对linux shell 数组不是很熟悉的话 ... -
linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
2011-07-07 15:15 3927linux shell有一套自己的流程控制语句,其中包 ... -
linux shell 数组建立及使用技巧
2011-07-07 15:13 3198linux shell在编程方面比windows 批处理 ... -
linux shell “(())” 双括号运算符使用
2011-07-07 14:47 2963在刚开始学习inux shell脚本编程时候,对于它的 四 ... -
shell编程
2011-07-06 22:59 0http://blog.csdn.net/yuanfen127 ... -
shell中的特殊变量
2011-07-06 16:23 1183shell中的特殊变量: 变量名 含义 $0 ... -
shell常用语法总结
2011-07-06 16:30 34051 变量小结 1.1 变量显 ... -
shell script的追踪与调试
2011-07-06 13:53 1416shell脚本的追踪和调试 sh [-nvx] scr ... -
Linux Shell for循环写法总结
2011-07-06 10:25 0Linux Shell for循环写法总结 2011-0 ... -
使用lsof命令查看哪个进程占用某端口
2011-06-30 14:15 2705lsof简介 lsof(list open f ... -
Linux防火墙(iptables)的开启与关闭
2011-06-18 11:50 2509Linux防火墙(iptables)的开启与关闭 L ... -
如何解决linux下apache启动时httpd: apr_sockaddr_info_get() failed for 报错
2011-06-17 12:52 60483今天在家里的RHLE5.5上安装apache的时候, ... -
修改Linux中的主机名、如何查看Linux IP
2011-06-17 12:42 9551查询、修改主机信息 一、如何修改Linux主机名称 ...
相关推荐
### awk实例入门教程知识点解析 #### 一、awk语言简介 awk是一种专为文本处理设计的强大脚本语言,尤其适用于数据格式化、过滤和报告生成。它的命名来源于三位创造者:Alfred Aho、Peter Weinberger 和 Brian ...
awk 编程语言入门 awk 编程语言是一种功能强大的命令行语言,主要用于处理文本数据。它可以读取文件或其他命令的输出,并根据条件进行查找和操作。awk 的设计思想很简单,但在实际操作中却很复杂。 awk 中的记录、...
awk 教程入门到精通 awk 是一种功能强大的文本处理工具,它可以对文本进行处理、格式化和输出。awk 的主要用途是处理文本文件,提取和处理数据,生成报表等。下面是一份 awk 教程,从基础知识到高级应用,涵盖了 ...
《awk入门到精通》这本书是针对Linux环境下的awk语言学习指南,主要讲解了awk作为一款强大的文本处理工具的使用方法。awk是一种编程语言,它的特点是无需预编译,使用直译器,变量无类型,支持关联数组,这使得awk...
### AWK 应用程序入门与实例 #### Awk简介及基本概念 Awk是一种功能强大的文本处理语言,尤其适用于处理结构化的数据文件,并能够轻松完成格式化输出、数据分析等任务。尽管其名称可能看起来有些怪异,但其实用性...
本资料包是针对awk脚本学习的快速入门教程,旨在帮助初学者快速掌握awk的基本用法和高级技巧。 一、awk简介 awk是由Aho、Weinberger和Kernighan三位大牛命名的(取首字母),最初设计用于处理结构化的文本数据,如...
本资源包包含了关于AWK的实用资料,包括一个PDF实例教程和一个简明使用指南。 1. **AWK基础** - **变量**:AWK中的变量是自动声明的,无需预定义类型,可以是数字或字符串。 - **模式和动作**:AWK程序由模式和...
【awk真实实例】这篇文章主要介绍了awk这种强大的文本处理语言,并通过一系列实例帮助新手入门。awk是一种专门用于文本处理和报表生成的语言,虽然它的名字有些奇特,但其功能强大且易于学习。 awk的语法简洁明了,...
- **《每天学习一个命令:awk 处理文本》**:这本书可能包含了awk的基础操作和实例,适合初学者入门。 - **《awk 入门教程_阮一峰的网络日志》**:阮一峰老师的教程通常深入浅出,易于理解,适合快速了解awk的基本...
入门实例: 假设 last -n 5 的输出如下: [root@www ~]# last -n 5 仅取出前五行 root pts/1 192.168.1.100 Tue Feb 10 11:21 still logged in root pts/1 192.168.1.100 Tue Feb 1000:46 - 02:28 (01:41) root ...
AWK 的入门实例中,例如使用 last -n 5 的输出,使用 AWK 只显示最近登录的 5 个帐号。工作流程是这样的:读入有 n 换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0 则表示所有域,$1 表示第一...
awk是一种编程语言,常用于文本和数据处理,尤其擅长处理具有记录和字段型态的数据。它是一个解释器,无需提前编译。awk的变量无类型之分,可以将字符串作为数组的下标使用,这称为关联数组。这些特性使得使用awk...
第一章快速入门部分介绍了AWK程序的结构和运行方式,包括如何处理错误。初学者可以通过简单的输出示例,了解如何打印每一行文本、特定字段以及字段数量(NF)、行号等。此外,还包括了如何进行更精美的输出,例如...
awk程序由一系列规则组成,每个规则包括一个模式和一个动作。模式定义了在哪些行上执行动作。例如: ```bash awk 'pattern { action }' ``` 当输入数据匹配到模式时,就会执行相应的动作,动作可以是打印、计算、...
### awk入门教程知识点详解 #### 一、概述 **awk** 是一种强大的文本处理工具,最初由 AT&T 贝尔实验室的 Alfred Aho、Peter Weinberger 和 Brian Kernighan 开发。它主要应用于 Unix 系统中,用于数据加工和信息...
本文将详细介绍两种常用的awk多文件操作方法,并结合具体实例来帮助理解。 #### 二、第一种方法:通过外部命令合并文件并使用awk处理 **实现思路**: 1. **文件合并与排序**:首先使用`cat`命令将两个文件的内容...
前言 在IT行业中,Shell作为Unix和Linux操作系统的核心组件之一,扮演着用户与系统交互...本文旨在提供一个基础的入门指南,希望对你有所帮助。在实践中不断探索和学习,你会发现自己在文本处理上的能力得到显著提升。