- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
awk学习——基础篇
Awk 学习笔记
这是我几天来学习AWK,记录的知识点。
教材:《UNIX she 范例精解》(第4 版)【美】E ie Quigley著 李化 张国强译(清华大学出版社 2007年 5月)
参考: /software/gawk/manual/gawk.html#Preface
/content/manage/ringkee/awk.htm
不足之处请多多指教
1.awk简介
1. awk 以记录和字段的方式来查看文本文件
2. 和其他编程语言一样,awk包含变量、条件和循环
3. awk 能够进行运算和字符串操作
4. awk 能够生成格式化的报表数据
2.awk概述
awk程序 awk命令、括在括号(或写在文件)中的程序指令以及输入文件的文件名几个部分组成。如果没有输入文件,
输入则来自于标准输入。
awk指令由模式、操作或者模式与操作的组合组成。模式是由某种类型的表达式组成的语句。如果某个表达式中没有
出现关键在if,但实际在计算时却暗含if这个词,那么这个表达式就是模式。操作由括在大括号中的一条或多条语句组成,
语句之间用分号或者换行符隔开。模式不能括在大括号中,模式由包括在两个正斜杠之间的正则表达式、一个或多个 awk操作
符组成的表达式组成。
格式:
awk /search pattern1/ {Actions}
/search pattern2/ {Actions} file
3.工作原理
1. awk使用一行作为输入(通过文件或者管道),并将这一行赋给内部变量$0
2. 行被空格分解为字段(单词),每一个字段存储在已编号的变量中,从$1开始。(awk 的内部变量 FS用来确定字段
的分隔符。初始时,为空格,包含制表符和空格符)
3. 对于一行,按照给定的正则表达式的顺序进行匹配,如果匹配则执行对应的Action ,如果没有匹配上则不执行任何
动作 ,Search Pattern 和 Action 是可选的,但是必须提供其中一个 。如果 Search Pattern 未提供,
则对所有的输入行执行Action 操作。如果Action 未提供,则默认打印出该行的数据 。{} 这种 Action 不做
任何事情,和未提供的 Action 的工作方式不一样
4. 打印字段,用 print、printf、sprintf,格式: { print $1, $3 } 内部变量output fie d separator
(OFS),默认为空格,$n之间的逗号被OFS中的字符替换。
5. 输出之后,从文件中另取一行,并将其复制到$0 中,覆盖原来的内容。重复进行……
4.格式化输出
print函数
print函数用于打印不需要特别编排格式的简单输出。 为复杂的格式编排则要使用 printf和 sprintf。若懂得C
语言,则也一定懂得如何使用 printf和 sprintf。
print函数的的转义序列
/b 退格
/f 换页
/n 换行
/r 回车
/t 制表符
/047 八进制值47,即单引号
/c c代表任意其他字符
打印数字时,可能需要控制数字的格式。可以通过 printf来实现,但是通过设置一个特殊的变量OFMT,是用
print函数也可以控制数字打印格式。OFMT默认为“%.6gd”,表示只打印小数部分的前6位。
例 1:
long@long-Ubuntu:~$ awk BEGIN { OFMT=%.2f; print 1.2456789, 12E-2 }
1.25 0.12
printf函数
printf函数返回一个带格式的字符串给标准输出,如同C语言中的 printf语句。printf语句包括一个加引号的
控制串,控制串中可能嵌套有若干格式说明和修饰符。控制串后面跟逗号,之后是一列由逗号分隔的表达式。与 print函数
不同的是,printf函数不会在行尾自动换行。若要换行,在控制串中提供转义字符\n。每个百分号和格式说明都必须有一个
对应的变量。要打印百分号就必须在控制串中给出两个百分号。
printf函数的转义字符
c 字符
s
文档评论(0)