??xml version="1.0" encoding="utf-8" standalone="yes"?>精品一区二区三区中文字幕,中文字幕欧美视频在线,久久96国产精品久久99软件http://www.aygfsteel.com/terrylc/category/47218.html贵在执着zh-cnTue, 01 Mar 2011 22:23:24 GMTTue, 01 Mar 2011 22:23:24 GMT60Write basic awk scripthttp://www.aygfsteel.com/terrylc/archive/2011/03/01/345427.htmlterrylcterrylcTue, 01 Mar 2011 12:54:00 GMThttp://www.aygfsteel.com/terrylc/archive/2011/03/01/345427.htmlhttp://www.aygfsteel.com/terrylc/comments/345427.htmlhttp://www.aygfsteel.com/terrylc/archive/2011/03/01/345427.html#Feedback0http://www.aygfsteel.com/terrylc/comments/commentRss/345427.htmlhttp://www.aygfsteel.com/terrylc/services/trackbacks/345427.html awkE序设计模型 对于awk的学习,了解awkE序的基本设计模型是很有意思的 awkE序的脚本通常是有三个部分l成的: * 处理输入前的动作-----BEGIN{} * 处理输入的动?----模式匚w以及Action * 处理完输入后的动?----END{} awk的主输入循环是核心,q是awk本n来控制和理的,E序员只是需要根据具体的需求编写控制和操作指o可以了?br /> 主输入@环也是上面提到的模式匹配以及ActionQ有如下几个很重要的特点Q?br /> * 模式和Action应用于每个输入行Q而且是每行一ơ,一ơ一?br /> * E序员编写的核心E序被封装在模式和动作中 * 循环l止与否是有awk来控制的 模式匚w C一句话 当awkd一输入行的时候,它试囑配脚本中的每个模式匹配规则,只有与一个特定的的模式匹配的 输入行才能有资格成ؓ操作对象Q如果没有指定操作对象,与模式相匚w的输入行被打印出来 (执行打印语句是一个默认操??br /> 变量 * pȝ变量 FSQ字D分割符Q可以采用默认的分割W,q有一U方式是在BEGIN中指定FSQFS支持正则表达式?br /> NRQ记录数 NFQ行中字D| RSQ记录分割符 OFSQ和FS{效的输出字D分割符Q默认g是空?br /> ORSQ和RS{效的输分割W,默认g是一个换行符 FILENAMEQ当前输入文件的文g?br /> ARGINDQ用于判定执行那个输入文?br /> * 用户自定义变?br /> 用户可以在Q何地方定义变量,可以直接使用Q不像java一样需要申明?br /> * 字段引用 对于字段的引用,我们可以$来表C?br /> * 向脚本传递参?br /> awk -v RS=" " 'scripts' a.txt 说明参数必须在脚本之前指定,解决了命令行参数在BEGIN中不能用的问题 操作W?/h1> 几种重要的操作符 * 赋值操作符 ++x和x++的区别,前者代表的是先++再返回|后者代表的是先q回|然后自n?+ * 关系操作W?br /> $5 ?/regex/ {} !Q代表是逻辑?br /> 注意?/h1> * awk容许在程序的M地方d注释 * 在awk中连接两个字W串使用I格 * 如果以命令行方式提供awkE序Q那么程序的其他M地方不能使用单引?br /> * 在BEGIN中制定的分割W的正则表达式?#8220;”Q而不像其他的时候?/ terrylc 2011-03-01 20:54 发表评论]]>Awk’s basic regexhttp://www.aygfsteel.com/terrylc/archive/2011/03/01/345044.htmlterrylcterrylcTue, 01 Mar 2011 08:59:00 GMThttp://www.aygfsteel.com/terrylc/archive/2011/03/01/345044.htmlhttp://www.aygfsteel.com/terrylc/comments/345044.htmlhttp://www.aygfsteel.com/terrylc/archive/2011/03/01/345044.html#Feedback0http://www.aygfsteel.com/terrylc/comments/commentRss/345044.htmlhttp://www.aygfsteel.com/terrylc/services/trackbacks/345044.html 基础概念 正则表达式是非常有魅力的知识Q不同的人对于同一的需求都能写Z同的正则表达式。这是能力的体玎ͼ也是Ҏ在表辑ּ理解的深度,q用熟练的显然差别?br /> 以前时常使用正则表达式,比如在java中,在php中,但是都没有系l的学习q它Q只是知道它很强大!目前׃工作需要开始用awk和sedQ那么很昄正则表达式的使用׃能逃避了?br /> 那接下来Q我一步步记录日常使用的点Ҏ滴?br /> 正则表达式定?/strong>正则表达式是一U描q字W串l构模式的Ş式化表达语言?br /> 正则表达式调用流E?/strong>* 首先E序解析正则表达式生一个模式,然后d输入?br /> * E序输入行拿来与模式进行匹?br /> * 输入行的W一个字W与模式的第一个字W进行比较,如果匚wQ则比较两者的W二个字W,无能何时Q只要匹配不p|Q就q回q且从字W串中这个字W后面的字符重新开始匹配,从匹配模式的W一行从新开始?/fieldset> 正则表达式的解析原则L字符(除了元字W?都被解释为只匚w它本w字面倹{?br /> 元字W汇?/h1> 很显Ӟ我们很希望了解神U的元字W,下面我就分类ȝ下这些元字符Q?br /> 字符c?/strong> 使用W号Q?nbsp; [] 作用: 规定某个位置能够出现的字W,C只是匚w一个字W而已?br /> 说明Q?nbsp; 匚wҎ号中字符cȝL一个,如果Ҏ号中W一个字Wؓ^,则表C否定匹配,W一字符?代表的是字符本nQ其他时候代表的是范围连字符。其他所有的原字W都失d们原有的含义?br /> NoteQ?nbsp; 字符cȝ记法 \d=[0-9] \D=[^0-9] \w=[0-9a-zA-Z] \W=[^0-9a-zA-Z] \s:匚wI白字符(回RQ换行,制表Q空? \S:匚w非空白字W?br /> 通配W?br /> 使用W号Q?nbsp; . 作用Q?nbsp; 匚wL单个字符 说明Q?nbsp; 在一般应用中不能匚w换行Q但是在awk中却可以匚w换行W?br /> 量词 使用W号Q?nbsp; *,+,?,\{m,n\},{m,n} 作用Q?nbsp; 限定紧跟在它前面字符出现的次?br /> 说明Q? * 代表匚w前面的字W?ơ或者多ơ,+代表匚w前面的字W?ơ或者多ơ,Q代表匹配前面的字符0ơ或?ơ,{m,n}代表前面的字W出现区间在m和n之间 括号 使用W号Q? () 作用Q? Ҏ则表辑ּq行分组 说明Q? * 代表匚w前面的字W?ơ或者多ơ,+代表匚w前面的字W?ơ或者多ơ,Q代表匹配前面的字符0ơ或?ơ,{m.n}代表前面的字W出现区间在m和n之间. Note: 其中存在文本捕获跟不捕获的问题,在这里我不详l记录了Q用到自己查找资料?br /> 锚点 使用W号: \b,^,$ 作用: 定匚w位置 说明: \b代表单词分界W的锚点Q每个单词前后都是存在一个\b,例如\bcat\b, 常用正则表达?br /> 用户?/p> /^[a-z0-9_-]{3,16}$/ 密码 /^[a-z0-9_-]{6,18}$/ 十六q制?/p> /^#?([a-f0-9]{6}|[a-f0-9]{3})$/ 电子邮箱 /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ IP 地址 /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ HTML 标签 /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ Unicode~码中的汉字范围 /^[\u2E80-\u9FFF]+$/ terrylc 2011-03-01 16:59 发表评论]]>Awk-script1http://www.aygfsteel.com/terrylc/archive/2011/02/18/344596.htmlterrylcterrylcFri, 18 Feb 2011 01:33:00 GMThttp://www.aygfsteel.com/terrylc/archive/2011/02/18/344596.htmlhttp://www.aygfsteel.com/terrylc/comments/344596.htmlhttp://www.aygfsteel.com/terrylc/archive/2011/02/18/344596.html#Feedback0http://www.aygfsteel.com/terrylc/comments/commentRss/344596.htmlhttp://www.aygfsteel.com/terrylc/services/trackbacks/344596.html 班的学生成l表信息如下Q?br /> mona 70 77 85 83 70 89 john 85.92 78 94 88 91 andrea 89 90 85 94 90 95 jasper 84 88 80 92 84 82 dunce 64 80 60 60 61 62 ellis 90 98 89 96 96 92 #grade.awk -- cacl student grade BEGIN{ FS = " " } {total = 0; for (i=2;i<=NF; i++) total += $i avg = total /(NF -1) #学生^均成l付l数l元?br /> student_avg[NR] == AVG #定字母{ if (avg >= 90) grade = "A" else if (avg >= 80) grade = "B" else if (avg >=70) grade = "C" else if (avg >=60) grade = "D" else grade = "F" ++class_grade [grade] print $1,avg,grade } END{ for(x = 1;i <= NR;x++) class_avg_total += student_avg[x] class_average = class_avg_total /NR for(x =1; x<=NR; x++) if (student_avg[x] >= class_average) ++above_average else ++below_average print "" print "Class Average:",class_average print "At or Above Average:",above_average print "Below Average:",below_average #打印每个字母{的学生数 for(letter_grade in class_grade) print letter_grade ":",class_grade[letter_grade]|"sort" } terrylc 2011-02-18 09:33 发表评论]]> վ֩ģ壺 Ϸ| | Ƶ| ˳| | | | Ҷ| Һ| | | | | Դ| | | | | ɽ| ǫ| | | Ȫ| ̺| | | Դ| ƽԭ| | ɫ| | | »| Զ| | μԴ| ں| | | | ٷ|
使用W号Q?nbsp; *,+,?,\{m,n\},{m,n}
用户?/p>
/^[a-z0-9_-]{3,16}$/
密码
/^[a-z0-9_-]{6,18}$/
十六q制?/p>
/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
电子邮箱
/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
URL
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
IP 地址
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
HTML 标签
/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
Unicode~码中的汉字范围
/^[\u2E80-\u9FFF]+$/