Send As SMS

2006-01-11

基于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