awk4j (AWK for Java Platform) - home

awk4j (AWK for Java Platform)

awk4j について

awk4j は、 AWKスクリプト (pattern-directed scanning and processing language) を Java 環境で実行するための言語処理環境です。

AWKスクリプトを、中間言語としてのホスト言語に変換する トランスレータ方式を採用しており、 ホスト言語の世界でのスクリプティングが可能。 AWK の手軽さと、 ホスト言語が持つフレームワークを利用した、 マルチリンガル環境での新しい スクリプティングの世界を開くことができます。

JavaFX Linux Support
screenshot
« awk4j environment »
AWK 言語 AWK コマンド (gawk, awk95など)
ホスト言語 Java JavaScript (JSE6) JavaScript (Rhino) JavaFX BeanShell Groovy Python Scala
トランスレータ AWK スクリプトを ホスト言語に変換するトランスレータ
インタプリタ - gij jrunscript Rhino interpreter - BeanShell interpreter Groovy interpreter Jython interpreter Scala interpreter
コンパイラ javac, dx gcj, javac javac - Rhino compiler javaFX compiler - Groovy compiler (Jython2.2.1) Scala compiler
実行環境 Android GCJ Java (JSE6)

Tips

awk4j の入力ファイルは、 URL 指定が可能で 一般ファイルと同じインターフェイスで読み込みが可能。 詳細は、 さあ始めよう を参照。

世界最短 1文字スクリプト、 ホームページをワンライナー (one-liner) で閲覧。
スクリプト '1' は、C言語のTRUEと同じ意味。
'1==1 {print $0;}' または '{print $0;}' の省略形で入力データを無条件に出力する。

$ AWK4J -e '1' 'http://awk4j.sourceforge.jp/home.html#utf-8'

ちなみに 2文字なら 'NF'。
'0!=NF {print $0;}' の省略形で入力データのフィールド数が 0 でなければ出力する。

$ AWK4J -e 'NF' 'http://www.yahoo.co.jp/#utf-8'

Scala サポート (1文字スクリプトのGUI版)。

#% import scala.swing.{MainFrame, ScrollPane, Label}
  { basename = FILENAME; result = result $0
}
END { IGNORECASE = 1
    gsub(/<(!|meta)[^>]+>/, "", result); sub(/^.*<html[^>]+>/, "<html>", result)
    sub(/<head>/, "<head><base href='" basename "' />", result)
#%  val top = new MainFrame {
#%    preferredSize = new java.awt.Dimension(880, 480); title = "awk4j - Browser (Scala)"
#%    contents = new ScrollPane {
#%      contents = new Label(""+ result)
#%    }
#%  }
#%  top.pack()
#%  top.visible = true
}
#% override def run__ = onEDT__ // executed on the Swing event dispatching thread.

News

  • 1.6.2 - 2009/12/5
    ・ Android 2.0 r3 SDK, Gcj 4.4.1 - 対応
    ・ Groovy 1.7-RC-1, Jython 2.5.1 final, Scala 2.7.7 final - 動作確認
  • 1.6.1 - 2009/10/4
    ・ Scala 2.7.7 RC1 対応 (Scala サポート)
       トランスレータ出力コードの最適化, for(in){break/continue} 対応
  • 1.6.0 - 2009/9/26
    Scala - HOST言語として新規サポート (Scala サポート)
    Android 1.6 r1, JavaFX 1.2.1, Groovy 1.6.4, Python(Jython) 2.5.1 rc3 - 動作確認
  • 1.5.7 - 2009/8/18
    リファクタリング実施による安定化バージョン
  • 1.5.6 - 2009/7/20
    Android 1.5 SDK, Release 3, Python(Jython) 2.5.0 final - 動作確認
    GCJサポート - リファクタリングの実施により Javaプラットフォームとの互換性が向上
  • 1.5.5 - 2009/6/7
    JavaFX 1.2 SDK - New, Linux サポート (JavaFX サポート)
    Android 1.5 SDK, Release 2, Groovy 1.6.3, Python(Jython) 2.5rc3, Rhino 1.7R2 - 動作確認
    トランスレータによる正規表現の変換により GNU AWK との互換性が更に向上した
  • 1.5.4 - 2009/5/17
    Android 1.5 SDK, Release 1 - 日本語表示に関する問題対応 (Android サポート)
    Python(Jython) 2.5rc2 - PythonスクリプトのUNICODE化による日本語対応 (Python サポート)
    パフォーマンスチューニングの実施 (GCJ サポート)
  • 1.5.3 - 2009/3/15
    Android 1.1 SDK, Release 1 対応 (Android サポート)
  • 1.5.2 - 2009/2/28
    JavaFX 1.1 SDK, 対応
  • 1.5.1 - 2009/1/9
    ドラッガブル アップレット サポート (Java, JavaFX, Python)
  • 1.5.0 - 2008/12/21
  • 1.4.1 - 2008/11/10
    Android 1.0 SDK. Release 1, SQLite JDBC サポート (Android サポート)
  • 1.4.0 - 2008/10/19
    Android 1.0 SDK. Release 1 対応 (Android サポート)
  • 1.3.3 - 2008/9/15
    マンデルブロ集合サンプルを修正 (キャッシュ制御の見直しによるズーム性能改善) (JavaFX サポート)
  • 1.3.2 - 2008/9/11
    JavaFX プレビュー版 (javaFX sdk-1.0-pre1) 対応、 Linuxは不可(SDKなし) (JavaFX サポート)
  • 1.3.1 - 2008/4/25
    サンプルおよびドキュメントを改定 (JavaFX サポート)
    Linux, Ubuntu 8.04, GCJ 4.2.3 で動作確認 (GCJ サポート)
  • 1.3.0 - 2008/4/1
    JavaFX (JavaFX Script 20071008) に対応 (JavaFX サポート)
    AWKスクリプトが JavaFX で実行可能となった
  • 1.2.0 - 2008/2/19
    GCJ (GNU Compiler for Java) に対応 (GCJ サポート)
    AWKスクリプトを Javaソースに変換し、ネイティブマシンコードでの実行が可能になった
  • 1.1.0 - 2007/10/22
    一般ファイルインターフェイスでの SQL文実行 (SQL スクリプティング)
    帰ってきた一行野郎 AWK4J -e '1' 'jdbc:somerdb:somedb;;SELECT * FROM TABLE'
  • 1.0正式版 - 2007/09/09
    Linux Ubuntu (ウブントゥ) Unicode 環境での動作を確認
    ネットワーク通信をサポートする拡張機能の追加 (言語仕様および LL. じゃんけん2.0対戦 参照)
  • 1.0.beta9 - 2007/07/31
    ライセンスを The GNU General Public License Version 3(GPLv3) に変更
    ソケット通信機能 (TCP/IP, UDPソケット) を実装した
    ソケット通信をサポートするための拡張機能を実装 (スレッド, タイマー, コード変換など)
    サンプルに daytime, echo, http, Lightweight Language じゃんけん 2.0 対戦プログラムを追加
  • 1.0.beta8 - 2007/06/10
    Linux 環境の GNU AWK 互換のため printf で表示する指数部の最小表示桁数を可変とした
    [-]d.dddde±[d]dd 省略値は 2桁 ex. 3.4e+12 (プラトフォーム依存)
  • 1.0.beta7 - 2007/05/20
    プログラム構造の視覚化 サンプルとして、DOT言語(Graphviz) にて AWK構文解析部をグラフ化
  • 1.0.beta6 - 2007/05/04
    呼び出し元で配列操作を行っていない配列を、関数に渡す場合のスコープ問題を解消
  • 1.0.beta5 - 2007/05/02
    構文解析の問題を修正 (print $+i, $- -i, one != one = 1; など)
  • 1.0.beta4 - 2007/04/07
    switch文 および 組み込み変数 ERRNO の実装により GNU AWK との互換性を向上
    switch (expression) { case expression or パターン: statement [ default: statement ] }
  • 1.0.beta3 - 2007/03/15
    トランスレータが副作用を伴う配列代入文を正しく変換するよう修正
    ex. array[--ix] += value; 代入演算子: (+= -= *= /= %= ^= **=)
  • 1.0.beta2 - 2007/03/08
    ビット操作関数 (and, or, xor, compl, lshift, rshift) を実装 (GNU AWK互換)
    AWKスクリプトで 8, 16進の数値定数の定義を可能とした (GNU AWK互換)
    正規表現 /./ が改行 "\n" にマッチするようになった (POSIX仕様)
  • 1.0.beta1 初リリース - 2007/02/28

Download

最新版は、 1.6.1 です。