コミュニティ/BBS

トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BBS

BBS ご利用の際の注意

  • ここには AWK に関するさまざまな話題を記載してください。
  • 件数が増えてきたら古いものから順に過去ログに移動します。過去ログは [BBS] から参照できます。
  • 投稿する前に
    • 過去ログに同様の内容がないかを確認してください。
    • ここに記載された内容に関しては、gawk を利用する際に用いたり、書籍への掲載、他の Web への掲載、他の ML への投稿の際の引用を行うことがあります。ご理解の上、ご利用ください。
    • AWK とは無関係と思われる投稿、コメントに関しては削除させていただきますのでご了承ください。

最近のタイトル一覧

[ 1 2 3 4 5 6 ]

BBS

お名前
件名
本文

2005/12/06 に投稿された gawk 3.1.5 のバグについて - hi_saito (2005年12月11日 00時30分23秒)

bug in gawk 3.1.5に投稿された記事がありますが、Aharon Robbins (Arnold Robbins のこと) が書いているとおり、既に同様のバグフィックスは行っております。

gawk 3.1.5 20051202 版 にあるものは既にバグフィックスされているものですので、ご利用ください。


{{comment}}

gawk 3.1.5 20051202 版 - hi_saito (2005年10月08日 23時34分57秒)

gawk 3.1.5 はマルチバイトの文字列関数が使えるため、日本人には非常に有用なバージョンであるものの、一部では「gawk 3.1.6 のスケジュールは?」と言われているようにバグが多いのが実情です。

そこで、私の方で確認できているパッチ当てたものを用意してみましたので、"Own Risk" でお使いください。したがって、問題があっても私は責任を負いません。

動作テストは Debian GNU/Linux (Sarge) にて確認していますが、動作保障するものではありません。

以下適用したパッチ

以下のパッチを適用しています。

20051202 版での追加適用

20051008 版での適用

ビルド方法

ビルド方法は、ドキュメント/インストールガイドに従うものとしますが、以下のようにしてビルドを行っています。

$ ./configure --enable-switch CFLAGS="-g -O3 -march=i686"
$ make
$ make check
$ su
# make install

また、"make check" は問題なく "ALL TESTS PASSED" であることは確認しています。

おまけ

各パッチの適用の際に、pot ファイルのインデックスが乱れたため、再度以下のようにして po ファイルを更新させています。

$ cd po
$ make gawk.pot-update
$ make update-po
$ make update-gmo

一応、全て翻訳完了の状態にしてありますので、そのままお使いください。


{{comment}}

「よかった探しリース」 - hi_saito (2005年11月23日 19時26分07秒)

「よかった探しリース」という企画が 11 月 24 日〜12 月 25 日の限定で行われています。(もう少し固まれば参加しようと考えています)

ふと一年を振り返ると今年は awk 関係で随分好き勝手活動をさせていただきました。xgawk 開発に参加、LLDN での発表、「日本 GNU AWK ユーザー会」の勝手な設立など、個人的には実りのある一年でした。

  • よかったこと 1:xgawk の開発に参加し、XML 拡張の際に UTF-8 だけでなく日本語の他の文字コード (EUC-JP, SJIS, CP932) にも対応させることができた。
  • よかったこと 2:LLDN にて xgawk の発表を行い、非常に好印象であった。これを受けて来年は実行委員として LL に参加することも決まった。
  • よかったこと 3:「日本 GNU AWK ユーザー会」の Web ページを作成し、多くの人に閲覧してもらっている。この際に Free Style Wiki を用いたのは正解で、楽にメンテナンスできている。

{{comment}}

xgawk (2005-11-18) - hi_saito (2005年11月18日 00時08分26秒)

何故か (本当に何故か) sleep の実装を行おうということで、もう少し strftime() 関数の精度を上げようということになり、xgawk の開発が進み始めました。

最新版が CVS からダウンロードできます。

BEGIN {
  delta = 2.347
  printf "Start time = %.6f [systime = %s]\n",t0 = gettimeofday(), systime()
  printf "Sleep(%s) return code = %s\n",delta,sleep(delta)
  printf "End time = %.6f [systime = %s]\n",t1 = gettimeofday(), systime()
  printf "Elapsed time = %.6f\n",t1-t0
}

のようなスクリプトを実行すると、

  Start time = 1132155426.674231 [systime = 1132155426]
  Sleep(2.347) return code = 0
  End time = 1132155429.023803 [systime = 1132155429]
  Elapsed time = 2.349572

のように精度良く表示されます。

さて、問題は、「これって何に使う?」というところですが、何に使えそうですか?

今、ふと思いついたのは flock() の代わりに時間で各ロックファイル名を付けてロックしてみるとか…。


{{comment}}

gawk for Windows はシングルクォートが使えた方が便利か? - hi_saito (2005年11月15日 01時38分55秒)

もともと、jgawk (DOS) はシングルクォートが使えたため、UNIX 環境の一行野郎をそのまま移植できたというのも jgawk がヒットした理由のひとつだと思います。(私は shell の代わりとしても jgawk を使っていました)

さて、スクリプティング言語資料室(仮)などをはじめ、多くの人が移植している gawk for Windows ですが、シングルクォートが使えないケースも多いようです。もちろん、普通にソースコードをビルドすると (Windows ではビルドしたことないのですが) 一行野郎の部分は最初にシェルである cmd.exe が解釈するわけですから、シングルクォートは使えないことになりそうな気もします。(Netnews にはそれらに関する質疑が多くなされています)

やっぱり、gawk for Windows はシングルクォートが使えた方が便利なんでしょうか?全ての UNIX ライクなツールが対応しているわけではないため、頭の中で「これは Windows だからダブルクォートね」という意識を持つことも必要だと思います。

2ch の「awkについて語るスレ」で話題に上っていたので、BBS に書いてみました。


{{comment}}

AWKでわかり易い本を教えて下さい!! - hi_saito (2005年11月06日 00時56分34秒)

mixi 上の話なので、mixi 加入者しか見ることができませんが、 「[Fedoraな○○] トピック」で awk の話題が出ています。

最初、自分が書き込んだのかと思ってしまった。(w

http://mixi.jp/view_bbs.pl?id=2658059


{{comment}}

ディレクトリ中のファイルサイズ合計値を バイト表示 - hi_saito (2005年11月03日 18時44分48秒)

簡単な awk の用例ですが、いろんなコマンドを組み合わせた良い使い方だと思います。

awk と ls で再帰的にディレクトリの中を検索する方法もありますが、こちらの方がスマートだと思います。

なかなかいいなと思ったので、掲載しておきます。

http://sonic64.com/2004-05-26.html


{{comment}}

Quick and Dirty Data Extraction in AWK - hi_saito (2005年10月26日 23時20分48秒)

Quick and Dirty Data Extraction in AWK という名前の記事が Linux Journal に出ています。

内容はメールで送られてくる定型文書 (ここでは通貨変動のメール) を awk でグラフ化するというものです。

定型だからこそ awk で簡単に扱えるのですが、awk らしい使い方が紹介されています。{{comment}}

Emacs 色付け編 - hi_saito (2005年10月10日 01時21分18秒)

Emacs で各キーワードを元に色を指定することができます。ただし、そのままでは、最新の gawk へ追従ができず、中途半端に色が指定されてしまいます。そこで、他にも方法があると思いますが、ここでは私がやっている hilit19 を用いた方法を紹介します。awk-mode.el などを書き変えることなく色指定ができます。

なお、このドキュメントは私が以前「Gawky Auk」に書いたものに加筆修正をしたものです。

左の画面が Poderosa 上の emacs で表示した awk スクリプトのサンプルです。

キーワードファイルの作成

まず、~/elisp というディレクトリを作成します。

$ mkdir ~/elisp

この中に下記の内容のファイルを awk-hilit.el という名前で作成して下さい。

(if (featurep 'hilit19)
 (hilit-set-mode-patterns
   'awk-mode
      ;; shell wrapper
    '(("^[ \t]*#!.*" nil include)
      ;; include for igawk
      ("^include.*$" nil include)
      ;; for RCS
      ("\\$\\(Revision\\|Date\\|Author\\).*\\$" nil secondary-selection)
      ;; comments
      ("^[ \t]*#.*" nil comment)
      ;; BEGIN / END
      ("\\(BEGIN\\|END\\)" nil include)
      ;; strings (single quoted, double quoted, regular expression)
      ("\"[^\n\"]*\"" nil string)
      ("\'[^\n\']*\'" nil string)
      ("\/[^\n\/]*\/" nil string)
      ;; exit
      ("exit\\( [0-9]\\|\\)" nil red-underline)
      ("\\\\$" nil ForestGreen-bold)
      ;; stetements
      ("\\b\\(if\\|else\\|for\\|do\\|break\\|continue\\|printf\\|print\\|return\\|next\\|nextfile\\|delete\\|exit\\|getline\\|close\\|fflush\\|system\\|switch\\|case\\)\\b" nil keyword)
      ;; built in functions 1 (strings)
      ("\\b\\(length\\|substr\\|index\\|match\\|split\\|sub\\|gsub\\|sprintf\\|tolower\\|toupper\\|asort\\|gensub\\|strtonum\\)\\b" nil keyword)
      ;; built in functions 2 (time)
      ("\\b\\(mktime\\|strftime\\|systime\\)\\b" nil keyword)
      ;; built in functions 3 (bit)
      ("\\b\\(and\\|compl\\|lshift\\|or\\|rshift\\|xor\\)\\b" nil keyword)
      ;; built in functions 4 (international)
      ("\\b\\(bindtextdomain\\|dcgettext\\|dcngettext\\)\\b" nil keyword)
      ;; built in functions 5 (mathe)
      ("\\b\\(exp\\|log\\|sqrt\\|sin\\|cos\\|atan2\\|rand\\|srand\\|int\\)\\b" nil keyword)
      ;; user defined function
      ("\\b\\(function\\|func\\)\\b" nil defun)
      ;; built in variables
      ("\\(FS\\|NF\\|NR\\|FNR\\|FILENAME\\|RS\\|OFS\\|ORS\\|OFMT\\|SUBSEP\\|ARGC\\|ARGV\\|ENVIRON\\|ARGIND\\|BINMODE\\|CONVFMT\\|ERRNO\\|FIELDWIDTH\\|IGNORECASE\\|LINT\\|PROCINFO\\|RT\\|RSTART\\|RLENGTH\\|TEXTDOMAIN\\)" nil include)
      )))
(provide 'awk-hilit)

.emacs を変更する

~/.emacs に下記の部分を追加します。Emacs Lisp を知らなくても何となくどこを変更すれば色が変るかが分かると思います。色は好みで変更してください。見本はとほほの WWW 入門の色見本の「Netscape 色パレット」と同じ名前の指定です。

(setq load-path (cons (expand-file-name "~/elisp/") load-path))
;; 文字に色をつける (C-l で画面の更新 (デフォルトは hilit-recenter))
(if window-system
 (progn (require 'hilit19)
   (hilit-translate
     ; コメント
     comment  'MediumSeaGreen
     ; 宣言 typedef(c)  defvar(el)  documentstyle,begin,end,it(tex)
     decl     'IndianRed
     ; #define(c)  defconst(el)  title,setcounter(tex)
     define   'IndianRed
     ; 関数名 (c)  defun(el)  newcommand(tex)
     defun    'IndianRed
     ; #include,#typedef(c)  require,provide(el)  include(tex)
     include  'IndianRed
     ; キーワード if,return(c)  if,progn(el)  section,hspace(tex) 
     keyword  'bold
     ; ラベル item,caption(tex)
     label    'red
     ; 文字列
     string   'Blue
     ; 型 int,const(c)
     type     'bold
     ; 参照 ref,cite(texのみ)
     crossref 'red
     ; 数式 (texのみ)
     formula  'DarkOrchid)
       (global-set-key "\C-l" 'hilit-rehighlight-buffer)
       (add-hook 'awk-mode-hook   ; Awk-script モードで色を付ける
         '(lambda () (require 'awk-hilit)))
))

もともと "if window-system" という部分があるように、X Window での設定ですが、最近の端末には xterm のシーケンスを理解するものもあり、Poderosa であれば、以下のようにしていても動作しました。

(setq load-path (cons (expand-file-name "~/elisp/") load-path))
;; 文字に色をつける (C-l で画面の更新 (デフォルトは hilit-recenter))
 (progn (require 'hilit19)
   (hilit-translate
     ; コメント
     comment  'MediumSeaGreen
     ; 宣言 typedef(c)  defvar(el)  documentstyle,begin,end,it(tex)
     decl     'IndianRed
     ; #define(c)  defconst(el)  title,setcounter(tex)
     define   'IndianRed
     ; 関数名 (c)  defun(el)  newcommand(tex)
     defun    'IndianRed
     ; #include,#typedef(c)  require,provide(el)  include(tex)
     include  'IndianRed
     ; キーワード if,return(c)  if,progn(el)  section,hspace(tex) 
     keyword  'bold
     ; ラベル item,caption(tex)
     label    'red
     ; 文字列
     string   'Blue
     ; 型 int,const(c)
     type     'bold
     ; 参照 ref,cite(texのみ)
     crossref 'red
     ; 数式 (texのみ)
     formula  'DarkOrchid)
       (global-set-key "\C-l" 'hilit-rehighlight-buffer)
       (add-hook 'awk-mode-hook   ; Awk-script モードで色を付ける
         '(lambda () (require 'awk-hilit)))
)

完成へ

これで拡張子が awk のものは色付きの awk-mode として表示されます。単に派手なだけでなく、すぐに関数に目をやることができます。

この方法は単に awk-mode だけでなく、他の mode へも応用できます。例えば、shell スクリプトに色を付ける場合も、同様の方法で色付けできますので、試してみてください。

ただし、この方法では、リアルタイムに色の変更ができず、色を変更するには C-l を押す必要があります。

AWK での最多質問とは

AWK は非常に簡単な構文であるのと同時に省略可能な部分が多いためか、動作しない原因の大半がケアレスミスだったりします。事実、Netnews の comp.lang.awk を眺めていると、そういった質問に何度も出会います。できるだけ自分が開発しやすいエディタで間違えないようにしましょう。


{{comment}}

gawk 3.1.5 20051008 版 - hi_saito (2005年10月08日 23時34分57秒)

gawk 3.1.5 はマルチバイトの文字列関数が使えるため、日本人には非常に有用なバージョンであるものの、一部では「gawk 3.1.6 のスケジュールは?」と言われているようにバグが多いのが実情です。

そこで、私の方で確認できているパッチ当てたものを用意してみましたので、"Own Risk" でお使いください。したがって、問題があっても私は責任を負いません。

基本的に Arnold Robbins のパッチのみを信用し、認められていないパッチは適用していません。

動作テストは Debian GNU/Linux (Sarge) にて確認していますが、動作保障するものではありません。

以下適用したパッチ

以下のパッチを適用しています。

ビルド方法

ビルド方法は、ドキュメント/インストールガイドに従うものとしますが、以下のようにしてビルドを行っています。

$ ./configure --enable-switch CFLAGS="-g -O3 -march=i686"
$ make
$ make check
$ su
# make install

また、"make check" は問題なく "ALL TESTS PASSED" であることは確認しています。

おまけ

各パッチの適用の際に、pot ファイルのインデックスが乱れたため、再度以下のようにして po ファイルを更新させています。

$ cd po
$ make gawk.pot-update
$ make update-po
$ make update-gmo

一応、全て翻訳完了の状態にしてありますので、そのままお使いください。


  • Windows 版も FIELDWIDTH の修正版 (10/12 版) を木村さんが出してくださいました。 - hi_saito (2005年10月16日 21時12分41秒)

スクリプティング言語資料室(仮)から辿ってください。

{{comment}}

この秋に読む!TOPエンジニアが刺激を受けた25冊 - hi_saito (2005年10月02日 23時47分27秒)

この秋に読む!TOPエンジニアが刺激を受けた25冊という記事に触発されて多くの人が刺激を受けた本を書かれていますが、意外に多いのが以下の書籍でした。

単に awk の紹介だけではなく、アルゴリズムの紹介なども含まれており、掲載されているスクリプトが C ライクな文法で書かれた awk スクリプトであるため、awk 使いだけでなく、多くのプログラマへ刺激を与えることができたのだと思います。

プログラミング言語AWK

作者
アルフレッド・V. エイホ (著), ピーター・J. ワインバーガー (著), ブライアン・W. カーニハン (著), Alfred V. Aho (原著), Peter J. Weinberger (原著), Brian W. Kernighan (原著), 足立 高徳 (翻訳)
出版社
新紀元社

  • 私も「はてな」のブログ上に、書いていますが、本書も含まれています。 - hi_saito (2005年10月02日 23時49分11秒)

http://d.hatena.ne.jp/Rocco/20050924#p1{{comment}}

CUI 上での CPU load グラフスクリプト - hi_saito (2005年10月02日 02時01分05秒)

CUI でも screen などで画面を切り替えて使えるのだから、ひとつくらいは常に CPU ロードを表示しててもいいのではないか? と思って作ったスクリプトです。画面のようにグラフを書いてくれます。

細かな処理は全く考えていません。

実行方法は、

$ gawk -f cload.awk

で動作します。

$ cat cload.awk
#! /usr/local/bin/gawk -f
BEGIN {
  for (;;) {
        "/usr/bin/uptime" | getline uptime_str;
        close( "/usr/bin/uptime" );
        split( uptime_str, uptime_arr );
        sub( ";", "", uptime_arr[8] );
        for ( i = 0; i <= int( uptime_arr[8] * 80 ); i++ ) {
          uptime_bar = sprintf( "%s#", uptime_bar );
        }
        uptime_bar = sprintf( "%s (%d)", uptime_bar, uptime_arr[8] * 100 );
        printf( "%s\n", uptime_bar );
        uptime_bar = "";
        system( "/bin/sleep 5" );
  }
}

{{comment}}

gawk の読み方 - hi_saito (2005年09月29日 01時05分45秒)

gawk って何て読むんでしょうか?皆さんは何て読んでますか?

ちなみに、「はてな」によると「じーおーく」 だそうですが、以前「ごーく」と書籍で読んだ記憶もあります。

提案ですが、「ぐおーく」と読んでみてはどうだろうというものです。GNOME (「ぐのーむ」) とかと同じ発想ですが、いかがでしょうか?


{{comment}}

Wiki ワードについて - hi_saito (2005年09月16日 10時41分08秒)

「はてなダイアリー」のように WikiName? を使って簡単な説明を付ける作業を行っていますが、かえって分かりにくい場合などがありましたら、お知らせください。


{{comment}}

こんな LL は XX だ - hi_saito (2005年09月03日 21時15分48秒)

直接 awk と関係するところは少ないのですが、他の言語を知らなくても、なかなか笑えます。LLDN も終わったばかりですが、こういったものも LLDN でやって欲しかった。(「だめ自慢」が該当するのかな?)

ちょっとした戒めのつもりで掲載しておきます。

http://www.trashbox.jp/~moriwaka/moin.cgi/LLXX


{{comment}}

OSC への JGAUC の参加について - hi_saito (2005年09月03日 00時40分21秒)

先の LLDN にて好評だった xgawk ですが、なかなか操作方法が (awk の割りに) 複雑で、どこかで使い方を紹介しても良いのではないかという意見がありました。

ご存知のように 9/17 に OSC2005/Fall が開催されますが、今回の OSC に間に合わなくても次回の OSC にて勉強会をして欲しいという意見があれば、前向きに考えさせていただきます。

いかがでしょうか?


  • Fedora JP の勉強会の場をお借りして、xgawk の勉強会を行うようなことも可能だと思います。もちろん、他のコミュニティ、学校などでも場所をお貸しいただければ、やりたいと思います。 - hi_saito (2005年09月03日 00時55分41秒)
  • いいですね。ぜひ、Fedora JP 勉強会で。XenとかLVS、HAだとマシンがたくさん必要なので搬入が大変で( - H.Taira (2005年09月14日 00時42分25秒)

{{comment}}

LLDN の内容が xgawk の Web ページに掲載されています - hi_saito (2005年09月02日 02時04分03秒)

LLDN の内容が xgawk の Web ページ に掲載されています。

Japanese Presentation
2005-08-28
Hirofumi Saito has held a presentation in Japan at the Lightweight 
Language Day & Night event. He reports that Japanese AWK users were 
mainly interested in handling XML and PostgreSQL. His presentation 
and Arnold's message to the attendees are available online in 
Japanese . 

要するに、

日本でのプレゼンテーション
2005-08-28
斉藤博文が日本での Lightweight Language Day & Night でプレゼン
テーションを行いました。彼は日本の AWK ユーザーが XML や PostgreSQL 
を扱うことに興味を持っていることをレポートしました。参加者への彼の
プレゼンテーションと Arnold のメッセージは日本語でオンラインで読む
ことができます。

ということです。

http://home.vrweb.de/%7Ejuergen.kahrs/gawk/XML/


{{comment}}

xgawk のマルチバイト関数について - hi_saito (2005年09月02日 01時58分23秒)

いつ xgawkgawk 3.1.5 へ追従するかを開発グループに問い合わせをしてみました。

開発リーダーである Jurgen Kahrs が言うには、gawk 3.1.4 から gawk 3.1.5 の間には多くのパッチが出ており、その patch コマンドでは当てられず、手動で作業中ということです。

予定では、年末、もしくはもう少し前あたりにリリースを予定しているそうです。


{{comment}}

xgawk の PostgreSQL 以外への対応について - hi_saito (2005年09月02日 01時55分16秒)

PostgreSQL 以外の DB への対応について LLDN にてご質問があり、これを開発グループに投げました。

開発者のひとり Andrew J. Schorr が言うには、libdbi というライブラリを用いて MySQL や他の DB へのアクセスを考案中だそうです。

http://libdbi.sourceforge.net/


{{comment}}

[ 1 2 3 ]


最終更新時間:2007年07月30日 22時13分08秒