Awk学习笔记.doc
《Awk学习笔记.doc》由会员分享,可在线阅读,更多相关《Awk学习笔记.doc(18页珍藏版)》请在咨信网上搜索。
1、k学习笔记Table ofConnts1、ak简介、 aw命令格式与选项2、1、 awk得语法有两种形式2、2、命令选项3、 模式与操作、1、 模式3、 操作、 awk得环境变量5、 awk运算符6、 记录与域、1、 记录6、域6、3、 域分隔符7、 gawk专用正则表达式元字符、PSI字符集、 匹配操作符()10、 比较表达式1、 范围模板12、 一个验证passd文件有效性得例子13、 几个实例14、 awk编程14、 变量4、2、 GI模块14、3、 END模块14、 重定向与管道1、5、 条件语句14、循环14、 数组14、8、 k得内建函数1、 How-to1、wk简介awk就是一种
2、 编程语言,用于在liuxunix下对文本与数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令得输出。它支持用户自定义函数与动态正 则表达式等先进功能,就是linux/unix下得一个强大编程工具。它在命令行中使用,但更多就是作为脚本来使用。awk得处理文本与数据得方式就是这样得, 它逐行扫描文件,从第一行到最后一行,寻找匹配得特定模式得行,并在这些行上进行您想要得操作。如果没有指定处理动作,则把匹配得行显示到标准输出(屏 幕),如果没有指定模式,则所有被操作所指定得行都被处理。awk分别代表其作者姓氏得第一个字母。因为它得作者就是三个人,分别就是Alfre Aho、rn erng
3、han、tereinberger。gwk就是wk得GN版本,它提供了Bell实验室与N得一些扩展。下面介绍得ak就是以GU得g为例得,在 lnu系统中已把w链接到gawk,所以下面全部以awk进行介绍。、wk命令格式与选项2、1、得语法有两种形式 awk tos cri vr=val l(s) aw opons -f cptfl(s)、2、命令选项-F fs or fied-searaor fs指定输入文件折分隔 符,s就是一个字符串或者就是一个正则表达式,如-:。- vve -ain var=ale赋值一个用户定义变量。-fscrip-从脚本文件中读 取awk命令。-m nn and-mrn
4、对 nnn值设置内在限制,mf选项限制分配给nn得最大块数目;-m选项限制记录得最大数目。这两个功能就是Bl实验室版awk得扩展功能,在标准wk中不适用。-Wact or -pt, -W traoal or -trdiional在兼容模式下运行awk。所以g得行为与标准得w完全一样,所有得k扩展都被忽略。-W cplefor -opyleft, -Wcoyriht or -pyright打印简短得版权信息。-W elp o-hep,-W usage -ua打 印全部awk选项与每个选项得简短说明。-W linr -lint打印不能向传统ux平台移植得结构得警告。-W lnt-old or -l
5、n-old打印关于不能向传统ix平台移植得结构得警告。posix打开兼容模式。但有以下限制,不识别:x、函数关键字、uc、 换码序列以及当fs就是一个空格时,将新行作为一个域分隔符;操作符*与*=不能代替与=;flus无效。-W re-interval o -r-ierva允许间隔正则表达式 得使用,参考(rep中得Posix字符类),如括号表达式:alpha:。-W sucprrmt or -sourcrgam-text使用 prgm-xt作为源代码,可与-f命令混用。- eion or -vesin打印bu报告信息得版本。3、模式与操作ak脚本就是由模式与操作组成得:attern acti
6、o 如$ wk /rot/ te,或$ awk $3 100te。两者就是可选得,如果没有模式,则actin应用到全部记录,如果没有acton,则输出匹配全部记录。默认情况下,每一个输入行都就是一条记录,但用户 可通过S变量指定不同得分隔符进行分隔。、模式模式可以就是以下任意一个: 正则表达式/: 使用通配符得扩展集。 关系表达式:可以用下面运算符表中得关系运算符进行操作,可以就是字符串或数字得比较, 如2%1选择第二个字段比第一个字段长得行。 模式匹配表达式:用运算符(匹配)与!(不匹配)。 模式,模式:指定一个行得范围。该语法不能包括BEIN与ED模式。 GIN:让用户指定在第一条输入记录
7、被处理之 前所发生得动作,通常可在这里设置全局变量。 ND:让用户在最后一条输入记录被读取之后发生得动作。3、操作操 作由一人或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内。主要有四部份: 变量或数组赋值 输出命令 内置函数 控制流命令4、k得环境变量Tb1、awk得环境变量变量描述$当前记录得第n个字段,字段间由 FS分隔。0完整得输入记录。AG命令行参数得数目。N命令行中当前文件得位置(从0开始算)。AGV包含命令行参数得数组。CNVFMT数字转换格式(默认值为%、6g)NVIRON环 境变量关联数组。EN最后一个系统错误得描述。FILDWID字 段宽度列表(用空格键
8、分隔)。当前文件名。FN同R,但相对于当前文件。字段分隔符(默认就是任何空格)。IGNOCAS如果为真,则进行忽略大小写得匹配。NF当前记录中得字段数。当前记录数。OFMT数字得输出格式(默认值就是%、6)。OFS输 出字段分隔符(默认值就是一个空格)。RS输出记录分隔符(默认值就是一个换行符)。RNGTH由mach函数所匹配得字符串得长度。记录分隔符(默认就是一个换行符)。S由 mtch函数所匹配得字符串得第一个位置。SUBEP数组下标分隔符(默认值就是034)。5、awk运算符Tale2、运算符运 算符描述 += -= *= / %= *=赋值?:C条件表达式|逻 辑或&逻辑与 !匹 配正
9、则表达式与不匹配正则表达式 !=关 系运算符空格连接+ -加,减* / &乘,除与求余+ !一元加,减与逻辑非*求幂+-增加或减少,作为前缀或后缀$字 段引用in数组成员6、记录与域6、记录w 把每一个以换行符结束得行称为一个记录。记录分隔符:默认得输入与输出得分隔符都就是回车,保存在内建变量OR与RS中。0 变量:它指得就是整条记录。如$ kprnt 0 ts将输出test文件中得所有记录。变量N:一个计数器,每处 理完一条记录,NR得值就增加1。如 awkrintN,tst将输出test文件中所有记录,并在记录前显示记录号。6、2、域记 录中每个单词称做“域”,默认情况下以空格或ab分隔。
10、wk可跟踪域得个数,并在内建变量NF中保存该值。如$ awk print 1,$3 tet将打印est文件中第一与第三个以空格分开得列(域)。6、3、域分隔符内建变量 保存输入域分隔符得值,默认就是空格或tab。我们可以通过-F命令行选项修改F得值。如$ awk -F: print$1,$5 tes将打印以冒号为分隔符得第一,第五列得内容。可以同时使用多个域分隔符,这时应该把分隔符写成放到方括号中,如$aw -F:t pin 1,3es,表示以空格、冒号与ab作为分隔符。输出域得分隔符默认就是一个空格,保 存在OFS中。如$ awk -F: prnt $1,5 test,$1与$5间得逗号就就
11、是OFS得值。、aw专用正则表达 式元字符一般通用得元字符集就不讲了,可参考我得Se与Grep学习笔记。以下几个就是aw专用得,不适合nix版本得awk。Y匹配一个单词开头或者末尾得空字符串。B匹配单词 内得空字符串。匹配一个单 词得末尾得空字符串,锚定末尾。w匹配一个 字母数字组成得单词。W匹配一个非字母数字组成得单词。匹配字符串开头得一个空字符串。匹配字符串末尾得一个空字符串。、OI字符集可 参考我得Grep学习笔记9、匹配操作符()用来在 记录或者域内匹配正则表达式。如$ aw 1 /oot test将显示te文件第一列中以root开头得行。10、比较表达式codiioal exprss
12、ion ? exprssion2: epressin3,例如:$ awk ma = 1 $3 ? $: $:prit ma test。如果第一个域大于第三个域,$1就赋值给max,否则$3就赋值给mx。 wk 1 + $2 5 &$2 0 et,如果第一个域大于5,并且第二个域小于10,则打印这些行。1、范围模板范围模板匹配从第一个模板得第一次出现到第二个模板得第一次出现之间所有行。如果有一个模板没出现,则匹配到开头或末尾。如$ w /root/,mysqltet将显示root第一次出现到msql第一次出现之间得所有行。12、一个验证 aswd文件有效性得例子$ cat /e/ad awk -
13、F: != 7prnf(le %,does t ave 7 fiels:sn,NR,$0)$1! /A-a-z-9rint(lne %d,nn alphan numeric useri:%d: %sn,R,$0)$2 =* ritf(lne %, no passwod: s,R,$0)cat把结果输出给 awk,k把域之间得分隔符设为冒号。如果域得数量(NF)不等于7,就执行下面得程序。rintf打印字 符串ne ?oes hav fieds,并显示该条记录。如果第一个域没有包 含任何字母与数字,printf打印“no aand numric user ,并显示记录数与记录。如果第二个域就是一
14、个星号,就打印字符串“n paswd”,紧跟着显示记录数与记录本身。13、几个实例 a /(no|o)/ t-打印所有以模式o或s开头得行。 $awk ns/prnt $1 s-如果记录以n或s开头,就打印这个记录。 $ aw1 /-909$/(prin $1 test-如果第一个域以两个数字结束就打印这个记录。 ak$1 =10| $2 5 ?ok $1: error1)e-如果第一个域大于5则打印问号后面得表达式值,否则打印冒号后面得表达式值。 $ aw /oot,msq tet-打印以正则表达式ro开头得记录到以正则表达式mysl开头得记录范围内得所有记录。如果找到一个新得正则表达式ro
15、ot开头得记录,则继续打印直到下一个以正则表达式myql开头得记录为止,或到文件末尾。14、awk编程4、变量 在aw中,变量不需要定义就可以直接使用,变量类型可以 就是数字或字符串。 赋值格式:Vaiabe erssin,如 $1 /est/out=2 + $; prin unt tes,上式得作用就是,w先扫描第一个域,一旦tet匹配,就把第二个域得值加上第三个域得值,并把结果赋值给变量ount,最后打印出来。 ak 可以在命令行中给变量赋值,然后将这个变量传输给awk脚本。如$ aw -F: -fasci mon= ye=200 st,上式得mt与yea都就是自定义变量,分别被赋值为4与
16、204。在awk脚本中,这些变量使用起来就象就是在脚本中建立得一样。注意,如 果参数前面出现tst,那么在GN语句中得变量就不能被使用。 域变量也可被赋值与修改,如$wk 2 =100 $1; pnt test,上式表示,如果第二个域不存在,awk将计算表达式100加1得值,并将其赋值给$2,如果第二个域存在,则用表达式得值覆盖$2原来得值。 再例如:$ awk$1=rot=test;prnt test,如果第一个域得值就是“roo”,则把它赋值为“st”,注意,字符串一定要用双引号。 内建变量得使用。 变量列表在前面已列出,现在举个例子说明一下。$ w -:IGOREASE=1; 1 = A
17、RYpint R,$1,2,$NFtst,把GRECASE设为1代表忽略大小写,打印第一个域就是mary得记录数、第一个域、第二个域与最后一个 域。1、2、BEGN 模块BEGI模块后紧跟着动作块,这个动作块在aw处理任何输入文件之前执行。所以它可以在没有任何输入得情况下进行测试。它通常用来改变内建变量得值,如OFS,R与FS等,以及打印标题。如:$aw BGIFS=:; OFS=; ORS=nnprint $1,2,$3 test。上式表示,在处理输入文件以前,域分隔符(FS)被设为冒号,输出文件分隔符(OS)被设置为制表符,输出记录分隔符(ORS)被设置为两个 换行符。$w EGINpri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Awk 学习 笔记
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。