liunx命令规范手册文档格式.docx
- 文档编号:15395732
- 上传时间:2022-10-30
- 格式:DOCX
- 页数:63
- 大小:64.39KB
liunx命令规范手册文档格式.docx
《liunx命令规范手册文档格式.docx》由会员分享,可在线阅读,更多相关《liunx命令规范手册文档格式.docx(63页珍藏版)》请在冰豆网上搜索。
各范例由浅入深,彼此间相互连贯,范例中并对所使用的awk语法及指令辅以必要的说明.有关awk的指令,函数,...等条列式的说明则收录于附录中,以利读者往后撰写程序时查阅.如此编排,可让读者在短时间内顺畅地学会使用awk来解决问题.建议读者循着范例上机实习,以加深学习效果.
读者宜先具备下列背景:
[a.]UNIX环境下的简单操作及基本概念.
例如:
文件编辑,文件复制及管道,输入/输出重定向等概念
[b.]C语言的基本语法及流程控制指令.
(awk指令并不多,且其中之大部分与C语言中之用法一致,本手册中对该类指令之语法及特性不再加以繁冗的说明,读者若欲深究,可自行翻阅相关的C语言书籍)
2.awk概述
为什么使用awk
awk是一种程序语言.它具有一般程序语言常见的功能.
因awk语言具有某些特点,如:
使用直译器(Interpreter)不需先行编译;
变量无类型之分(Typeless),可使用文字当数组的下标(AssociativeArray)...等特色.因此,使用awk撰写程序比起使用其它语言更简洁便利且节省时间.awk还具有一些内建功能,使得awk擅于处理具数据行(Record),字段(Field)型态的资料;
此外,awk内建有pipe的功能,可将处理中的数据传送给外部的Shell命令加以处理,再将Shell命令处理后的数据传回awk程序,这个特点也使得awk程序很容易使用系统资源.
由于awk具有上述特色,在问题处理的过程中,可轻易使用awk来撰写一些小工具;
这些小工具并非用来解决整个大问题,它们只扮演解决个别问题过程的某些角色,可藉由Shell所提供的pipe将数据按需要传送给不同的小工具进行处理,以解决整个大问题.这种解题方式,使得这些小工具可因不同需求而被重复组合及重用(reuse);
也可藉此方式来先行测试大程序原型的可行性与正确性,将来若需要较高的执行速度时再用C语言来改写.这是awk最常被应用之处.若能常常如此处理问题,读者可以以更高的角度来思考抽象的问题,而不会被拘泥于细节的部分.
本手册为awk入门的学习指引,其内容将先强调如何撰写awk程序,未列入进一步解题方式的应用实例,这部分将留待UNIX进阶手册中再行讨论.
如何取得awk
一般的UNIX操作系统,本身即附有awk.不同的UNIX操作系统
所附的awk其版本亦不尽相同.若读者所使用的系统上未附有awk,
可透过anonymousftp到下列地方取得:
phi.sinica.edu.tw:
/pub/gnu
ftp.edu.tw:
/UNIX/gnu
prep.ai.mit.edu:
awk如何工作
为便于解释awk程序架构,及有关术语(terminology),先以一个员工薪资档(emp.dat),来加以介绍.
A125Jenny100210
A341Dan110215
P158Max130209
P148John125220
A123Linda95210
文件中各字段依次为员工ID,姓名,薪资率,及实际工时.ID中的第一码为部门识别码."
A"
"
P"
分别表示"
组装"
及"
包装"
部门.
本小节着重于说明awk程序的主要架构及工作原理,并对一些重要的名词辅以必要的解释.由这部分内容,读者可体会出awk语言的主要精神及awk与其它语程序言的差异处.为便于说明,以条列方式说明于后.
名词定义
数据行:
awk从数据文件上读取数据的基本单位.以上列文件emp.dat为例,awk读入的
第一笔数据行是"
A125Jenny100210"
第二笔数据行是"
A341Dan110215"
一般而言,一个数据行就相当于数据文件上的一行资料.(参考:
附录B内建变量"
RS"
)
字段(Field):
为数据行上被分隔开的子字符串.
以数据行"
为例,
第一栏第二栏第三栏第四栏"
A125"
"
Jenny"
100210
一般是以空格符来分隔相邻的字段.(参考:
附录D内建变量"
FS"
3.如何执行awk
于UNIX的命令行上键入诸如下列格式的指令:
("
$"
表Shell命令行上的提示符号)
$awk'
awk程序'
数据文件文件名
则awk会先编译该程序,然后执行该程序来处理所指定的数据文件.
(上列方式系直接把程序写在UNIX的命令行上)
awk程序的主要结构:
awk程序中主要语法是Pattern{Actions},故常见之awk程序其型态如下:
Pattern1{Actions1}
Pattern2{Actions2}
......
Pattern3{Actions3}
Pattern是什么?
awk可接受许多不同型态的Pattern.一般常使用"
关系表达式"
(Relationalexpression)来当成Pattern.
例如:
x>
34是一个Pattern,判断变量x与34是否存在大于的关系.
x==y是一个Pattern,判断变量x与变量y是否存在等于的关系.
上式中x>
34,x==y便是典型的Pattern.
awk提供C语言中常见的关系运算符(RelationalOperators)如
>
<
>
=,<
=,==,!
=
此外,awk还提供~(match)及!
~(notmatch)二个关系运算符(注一).
其用法与涵义如下:
若A为一字符串,B为一正则表达式(RegularExpression)
A~B判断字符串A中是否包含能匹配(match)B表达式的子字符串.
A!
~B判断字符串A中是否不包含能匹配(match)B表达式的子字符串.
"
banana"
~/an/整个是一个Pattern.
因为"
中含有可以匹配/an/的子字符串,故此关系式成立(true),整个Pattern的值也是true.
相关细节请参考附录APatterns,附录ERegularExpression
(注一:
)有少数awk论著,把~,!
~当成另一类的Operator,并不视为一种RelationalOperator.本手册中将这两个运算符当成一种RelationalOperator.
Actions是什么?
Actions是由许多awk指令构成.而awk的指令与C语言中的指令十分类似.
awk的I/O指令:
print,printf(),getline...
awk的流程控制指令:
if(...){..}else{..},while(...){...}...
(请参考附录B---"
Actions"
awk如何处理Pattern{Actions}?
awk会先判断(Evaluate)该Pattern的值,若Pattern判断后的值为true(或不为0的数字,或不是空的字符串),则awk将执行该Pattern所对应的Actions.反之,若Pattern之值不为true,则awk将不执行该Pattern所对应的Actions.
若awk程序中有下列两指令
50>
23{print"
Hello!
Theword!
!
}
~/123/{print"
Goodmorning!
awk会先判断50>
23是否成立.因为该式成立,所以awk将印出"
.而另一Pattern为"
~/123/,因为"
内未含有任何子字符串可match/123/,该Pattern之值为false,故awk将不会印出"
awk如何处理{Actions}的语法?
(缺少Pattern部分)
有时语法Pattern{Actions}中,Pattern部分被省略,只剩{Actions}.这种情形表示"
无条件执行这个Actions"
.
awk的字段变量
awk所内建的字段变量及其涵意如下:
字段变量
含义
$0
一字符串,其内容为目前awk所读入的数据行.
$1
$0上第一个字段的数据.
$2
$0上第二个字段的数据.
...
其余类推
读入数据行时,awk如何更新(update)这些内建的字段变量?
当awk从数据文件中读取一个数据行时,awk会使用内建变量$0予以记录.每当$0被改动时(例如:
读入新的数据行或自行变更$0,...)awk会立刻重新分析$0的字段情况,并将$0上各字段的数据用$1,$2,..予以记录.
awk的内建变量(Built-inVariables)
awk提供了许多内建变量,使用者于程序中可使用这些变量来取得相关信息.常见的内建变量有:
内建变量
NF(NumberofFields)
为一整数,其值表$0上所存在的字段数目.
NR(NumberofRecords)
为一整数,其值表awk已读入的数据行数目.
FILENAME
正在处理的数据文件文件名.
awk从资料文件emp.dat中读入第一笔数据行
之后,程序中:
$0之值将是"
$1之值为"
$2之值为"
$3之值为100
$4之值为210
$NF之值为4
$NR之值为1
$FILENAME之值为"
emp.dat"
awk的工作流程:
执行awk时,它会反复进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- liunx 命令 规范 手册