arnold robbins 发布在 linux journal 上的文章
简单翻译:
gawk 4.0中加入的新特性:
1.现在,gawk提供了引用外部脚本文件的机制.@include "文件名"这样的语句可以让gawk把该文件包含进来.和命令行的-f 参数类似,gawk会在当前目录寻找该文件.嵌套引用也是支持的,而且gawk不会引用相同的脚本两次.同时,伴随gawk很多年的igawk脚本将会被废弃
2.两个新的模式beginfile和endfile被添加进来,beginfile模式匹配的行为在每个文件的第一个记录被读取之前运行,如果一个文件不存在或者不能被打开,gawk会因致命错误退出程序,如果在beginfile中添加检测语句,发现文件打不开时,执行nextfile进入到下一个文件,则程序会继续运行.endfile行为可以在每个文件读取完之后做一些善后工作.
3.你可以通过一个字符串变量间接的调用一个函数,例如
function foo(a,b){ .... }
function bar(a,b){ .... }
begin{
fun="foo";@fun(1, 2) #间接调用foo(1,2)
fun="bar";@fun(1, 2) #间接调用bar(1,2)
}
4.gawk已经支持真正的多位数组a[x][y],而不是以前通过不可见字符连接多个索引来模拟多维数组.并且和c以及其他编译型语言不同,awk的多维数组不要求是矩形的.
5.默认支持了switch/case语句.gawk很久以前就有了switch语句,不过除非在编译的时候指定选项,否则是不可用的.
6.通过fpat匹配字段内容确定字段而不仅仅是通过fs匹配字段间隔来确定字段.前者类似于match函数匹配$0得到的数组,后则类似于split函数分割$0得到数组
7.gawk网络编程中支持ipv6
8.对应每个长选项,都一个短选项与之对应.
9.默认激活范围表达式:{1,9},由于为了兼容其他awk版本.gawk 4.0以前只有在指定--posix参数或者--re-interval参数时,范围表达式才可以使用
接下来将要进行的工作:
几个重要的特性将会加入到gawk中.
1.xmlgawk项目是基于gawk3.1.6产生的gawk分支版本.它提供更好的方式去加载awk动态扩展库以及更好的运行他们,这些都将会分别加入到gawk以及发行版中.
2.尽管gawk在很多年前就有了加载动态扩展库的能力,但是该api一直没有趋于稳定并且不易使用,我已经重新设计了一套api使得在awk程序中可以调用c语言写成的函数.下一步我将会发布这个api
3.目前gawk发行版中包含三个独立的可执行文件,普通的gawk,分析awk程序的pgawk,以及调试awk程序的dgawk.新的gawk核心使得将这三个程序合成为一个并且能通过参数分别运行他们成为可能.这将会简化编译步骤并且简化安装过程.
4.更新文档中过时的内容以及程序例子.
阅读(2415) | 评论(1) | 转发(0) |