摘要: 为什么要使用正则表达式 UNIX 中提供了许多 指令 和 tools,它们具有在文件中 查找(Search)字串或替换(Replace)字串 的功能。像 grep, vi , sed, awk,...不论是查找字串或替换字串,都得先告诉这些指令所要查找(被替换)的字串为何。若未能预先明确知道所要查... 阅读全文
posted @ 2013-11-21 21:06 阿杰的专栏 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 因内置变量的个数不多,此处按其相关性分类说明,并未按其字母顺序排列。ARGC ARGC表示命令行上除了选项 -F, -v, -f 及其所对应的参数之外的所有参数的个数。若将"awk程序"直接写在命令列上,则 ARGC 亦不将该"程序部分"列入计算。ARGV ARGV数组用以记录命令列上的参数。例... 阅读全文
posted @ 2013-11-21 21:05 阿杰的专栏 阅读(381) 评论(0) 推荐(0) 编辑
摘要: C.1 字串函数index( 原字串, 查找的子字串 ) 若原字串中含有欲寻找的子字串,则返回该子字串在原字串中第一次出现的位置,若未曾出现该子字串则返回0。例如: $ awk 'BEGIN{ print index("8-12-94","-") }'结果打印 2length( 字串 )... 阅读全文
posted @ 2013-11-21 21:04 阿杰的专栏 阅读(352) 评论(0) 推荐(0) 编辑
摘要: Actions 是由下列指令(statement)所组成: 1 表达式 ( 函数调用,赋值...) 2 print 表达式列表 3 printf( 格式化字符串, 表达式列表) 4 if( 表达式 ) 语句 [else 语句] 5 while( 表达式 ) 语句 6 do 语句 while( 表... 阅读全文
posted @ 2013-11-21 21:03 阿杰的专栏 阅读(301) 评论(0) 推荐(0) 编辑
摘要: awk 通过判断 Pattern 的值来决定是否执行其后所对应的Actions。这里列出几种常见的Pattern:A.1 BEGIN BEGIN 为 awk 的保留字,是一种特殊的 Pattern。 BEGIN 成立(其值为true)的时机是: "awk 程序一开始执行,尚未读取任何数... 阅读全文
posted @ 2013-11-21 20:58 阿杰的专栏 阅读(220) 评论(0) 推荐(0) 编辑
摘要: awk 中除了函数的参数列表(Argument List)上的参数(Arguments)外,所有变量不管于何处出现,全被视为全局变量。其生命持续至程序结束——该变量不论在function外或 function内皆可使用,只要变量名称相同所使用的就是同一个变量,直到程序结束。因递归函数内部的变量,... 阅读全文
posted @ 2013-11-21 20:51 阿杰的专栏 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 执行awk程序时,awk会自动从文件中读取数据来进行处理,直到文件结束。只要将awk读取数据的来源改成键盘输入,便可设计与awk 交互的程序。本节将提供一个该类程序的范例。范例:本节将编写一个英语生字测验的程序,它将印出中文字意,再由使用者回答其英语生字。 首先编辑一个数据文件 test.da... 阅读全文
posted @ 2013-11-21 20:49 阿杰的专栏 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 大部分的应用程序都允许使用者在命令之后增加一些选择性的参数。执行awk时这些参数大部分用于指定数据文件文件名,有时希望在程序中能从命令行上得到一些其它用途的数据。本小节中将叙述如何在awk程序中取用这些参数。 建立文件如下,命名为 see_arg: awk ' BEGIN { ... 阅读全文
posted @ 2013-11-21 20:47 阿杰的专栏 阅读(977) 评论(0) 推荐(0) 编辑
摘要: awk 每次从数据文件中只读取一行数据进行处理。awk是依照其内置变量 RS(Record Separator) 的定义将文件中的数据分隔成一行一行的Record。RS 的默认值是 "\n"(换行符),故平常awk中一行数据就是一条 Record。 但有些文件中一条Record涵盖了多行数据,... 阅读全文
posted @ 2013-11-21 20:45 阿杰的专栏 阅读(1987) 评论(0) 推荐(0) 编辑
摘要: 本节将示范一个统计上班到达时间及迟到次数的程序。 这程序每日被执行时将读入两个数据文件: * 员工当日到班时间的数据文件 ( 如下列的 arr.dat ) *存放员工当月迟到累计次数的文件 当程序执行执完毕后将更新第二个数据文件的数据(迟到次数),并打印当日的报表。这程序将分成下... 阅读全文
posted @ 2013-11-21 20:42 阿杰的专栏 阅读(560) 评论(0) 推荐(0) 编辑
摘要: awk程序中允许调用Shell指令,并提供管道解决awk与系统间数据传递的问题。所以awk很容易使用系统资源,读者可利用这个特点来编写某些适用的系统工具。范例:写一个awk程序来打印出线上人数。 将下列程序建文件,命名为 count.awk BEGIN { while( "wh... 阅读全文
posted @ 2013-11-21 20:21 阿杰的专栏 阅读(321) 评论(0) 推荐(0) 编辑
摘要: awk程序中允许使用字符串当做数组的下标(index)。利用这个特色十分有助于资料统计工作。(使用字符串当下标的数组称为Associative Array) 首先建立一个数据文件,并取名为 reg.dat。此为一学生注册的资料文件;第一栏为学生姓名,其后为该生所修课程。 ... 阅读全文
posted @ 2013-11-21 20:10 阿杰的专栏 阅读(402) 评论(0) 推荐(1) 编辑
摘要: Pattern { Action }为awk中最主要的语法。若某Pattern的值为真则执行它后面的 Action。 awk中常使用"关系表达式" (Relational Expression)来当成 Pattern。 awk 中除了>, <, ==, != ,...等关系运算符( Relat... 阅读全文
posted @ 2013-11-21 19:57 阿杰的专栏 阅读(268) 评论(0) 推荐(0) 编辑
摘要: awk 处理数据时,它会自动从数据文件中一次读取一条记录,并会将该记录切分成一个个的字段;程序中可使用 $1, $2,... 直接取得各个字段的内容。这个特色让使用者易于用 awk 编写 reformatter 来改变数据格式。范例:以数据文件 emp.dat 为例,计算每人应发工资并打印报表。... 阅读全文
posted @ 2013-11-21 19:52 阿杰的专栏 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 2.1 为什么用AWK 由于awk具有上述特色,在问题处理的过程中,可轻易使用awk来撰写一些小工具;这些小工具并非用来解决整个大问题,它们只扮演解决个别问题过程的某些角色,可通过Shell所提供的pipe将数据按需要传送给不同的小工具进行处理,以解决整个大问题。这种解题方式,使得这些小工具可因不... 阅读全文
posted @ 2013-11-21 19:43 阿杰的专栏 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 前面的话: 这几天写了一个程序,在同一个目录里生成了很多文件,需要统计其中部分文件的总大小,发现经常用到的ls、du等命令都无济于事,我甚至都想到了最笨的方法,写一个脚本:mkdir一个新目录,把要统计总大小的文件mv过去,然后du或者ls -lh新目录。诚然,这个办法又笨又不精确,于是求助万能的... 阅读全文
posted @ 2013-11-21 19:38 阿杰的专栏 阅读(228) 评论(0) 推荐(0) 编辑