AWK从输入中按行读取。每行数据都会和程序中的每个模式进行匹配,并为每个匹配的模式执行关联的动作。AWK程序通常是直接从命令行执行的单行代码。例如,要从某个假定的Web服务器日志中计算GET请求的平均响应时间,可以输入如下代码:$ awk '/GET/ {total += $6; n++} END {print total/n}' server.log0.0186667这意味着:对于与正则表达式/GET/匹配的所有行 ,将其响应时间(第六字段,即$6)加起来并统计行数;最后,打印出响应时间的算术平均值。
sub和gsub中反斜杠的默认处理已恢复为3.1。我认为破坏兼容性是很愚蠢的,即使是为了符合标准。该sub 和gsub函数是核心的正则表达式替换功能,甚至一个涉及复杂处理反斜杠的小“修复”就能破坏已有的代码:当4.0.0版发布时,gawk维护者将POSIX规则设置为默认规则,打破了十多年的向后兼容性。不用说,这是个坏主意,从4.0.1版开始,gawk恢复了其历史行为,并且仅在给出--posix时才遵循POSIX规则。Robbins进行最初的更新时可能判断不足,但是很明显他很重视向后兼容性。尤其是对于像gawk这样的流行工具,有时继续打破规范比改变某些东西的工作方式更好。
欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/) | Powered by Discuz! X3.2 |