基于javascript的awk模式初探
在Unix下,shell的管道功能构成了一种极具特色的软件组合、重用的功能,在Java/Javascript开发语言中均缺乏类似的机制。最近,对 网站的日志进行分析的过程之中,还是发现awk这样的工具最为适合需求。但是,就语言的能力来说,javascript这样的语言则具备awk不具备的更 强的能力。我也在考虑这样的一个问题,那就是是否可以在javascript这样的脚本语言基础之上,实现类似于awk的功能呢?
一个awk脚本可以这样书写成为javascript:
Example = Class.create();
Example.prototype = {
BINMODE: false,
CONVFMT: "%.6g",
FIELDWIDTHS: null,
FS: null,
IGNORECASE: null,
LINT: false,
OFMT: null,
...
ARGC
ARGV
ARGIND
ENVIRON
ERRNO
NF
NR
$1
$2
$3
..
$9
execute: function(in){
...
}
BEGIN: function(){
}
END: function(){
}
rule1: [
function(){
return true; // or $1 == 10
},
function(){
// process here
}
],
rule2: [
],
};
这首先是一个基本的javascript的程序,但是完全的模拟了awk的功能。如果在加上在javascript上模拟sort/grep等功能的话,完全有可能实现一个基于javascript的类似于shell的功能。
优点:javascript的语言能力非常强,而且可以和java进行很好的配合,可以在任何支持java的平台上运行,可读性也比一堆的awk语法更好。
0 Comments:
张贴评论
<< Home