AIX下的AWK语言介绍
awk语言的最基本功能:在文本或字符串中给予指定规则浏览和抽取信息。awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本中的信息。三种调用awk的命令方式:1.命令行方式:awk [-F field-separator] 'commands' input-file(s)-F选项可选:awk -F: 'commands' input-file2.将所有的awk命令插入一个文件,并是awk程序可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。3.将所有的awk命令插入一个单独文件,然后调用:awk -f awk-script-file input-files(s)-f:指明在文件awk-script-file中的awk脚本input-file(s):使用awk进行浏览的文件名。awk脚本在命令中调用awk时,awk脚本由各种操作和模式组成。-F,awk每次读一条记录或一行,并使用指定的分隔符分分隔指定域;所没分隔符,则使用空格。任何awk语句都由模式和动作组成模式,决定动作语句何时触发及触发事件,若忽略模式部分,动作将时刻保持执行状态。模式,可是任何条件语句,或符合语句,或正则表达式。BEGIN:设置计数,打印头,在任何文本浏览动作之前;END:用来在awk完成文件浏览动作后打印输出文件总数和结尾状态标志。动作,在{}内指定;大多用来打印;里面可包含:if,looping,循环推出结构;若不指明采取动作,awk将打印所有浏览出来的记录。例子:cat > grade.txtM.Tansley 05/99 48311 Green 8 40 44J.Lulu 06/99 48317 green 9 24 26P.Bunny 02/99 48 Yello 12 35 28J.Troll 07/99 4842 Brown-3 12 26 26L.Tansley 05/99 4712 Brown-2 12 30 28将awk输出的数据保存起来:1.awk '{print $0}' grade.txt > wow pg wow stuname indate seqno level age gnow gmax M.Tansley 05/99 48311 Green 8 40 44 J.Lulu 06/99 48317 green 9 24 26 P.Bunny 02/99 48 Yello 12 35 28 J.Troll 07/99 4842 Brown-3 12 26 26 L.Tansley 05/99 4712 Brown-2 12 30 282.使用tee命令,保存并且输出保存的数据到屏幕 [开发]/usr/b4nx/ytcclb>awk '{print $0}' grade.txt | tee delete_me_and_die stuname indate seqno level age gnow gmax M.Tansley 05/99 48311 Green 8 40 44 J.Lulu 06/99 48317 green 9 24 26 P.Bunny 02/99 48 Yello 12 35 28 J.Troll 07/99 4842 Brown-3 12 26 26 L.Tansley 05/99 4712 Brown-2 12 30 28 [开发]/usr/b4nx/ytcclb>pg delete_me_and_die stuname indate seqno level age gnow gmax M.Tansley 05/99 48311 Green 8 40 44 J.Lulu 06/99 48317 green 9 24 26 P.Bunny 02/99 48 Yello 12 35 28 J.Troll 07/99 4842 Brown-3 12 26 26 L.Tansley 05/99 4712 Brown-2 12 30 28打印所有数据awk '{print $0}' grade.txt M.Tansley 05/99 48311 Green 8 40 44 J.Lulu 06/99 48317 green 9 24 26 P.Bunny 02/99 48 Yello 12 35 28 J.Troll 07/99 4842 Brown-3 12 26 26 L.Tansley 05/99 4712 Brown-2 12 30 28打印部分域数据awk '{print $1,$4}' grade.txtM.Tansley GreenJ.Lulu greenP.Bunny YelloJ.Troll Brown-3L.Tansley Brown-2awk命令报错:awk '{print $1,&4}' wowawk: Syntax error at line 1 of program << {print $1,&4} >> context is {print >>> $1,& <<< 4}awk: illegal statement at line 1 of program << {print $1,&4} >>错误原因:参数输入错误,&4换为$4打印报告头[开发]/usr/b4nx/ytcclb>awk 'BEGIN {print "Name Belt\n------------"}> {print $1"\t"$4}' wowName Belt------------M.Tansley GreenJ.Lulu greenP.Bunny YelloJ.Troll Brown-3L.Tansley Brown-2打印行尾报错:awk 'BEGIN {print "Name\n--------"} {print $1} END> {"end-of-report"}' wowawk: Syntax error at line 2 of program << BEGIN {print "Name\n ... >> context is BEGIN {print "Name\n--------"} {print $1} END >>> <<<awk: bailing out at line 2 of program << BEGIN {print "Name\n ... >>原因:换行造成。awk 'BEGIN {print "Name\n--------"} {print $1} end {"end-of-report"}' wowName--------M.TansleyJ.LuluP.BunnyJ.TrollL.Tansleyawk错误,查找1.确保整个awk命令用单引号括起来;2.确保命令内所有引号成对出现;3.确保用花括号括起动作语句,用圆括号括起条件语句;