10/01/12 19:49:33 JtT8jcQo
愚痴。
Ubuntu9.10にして、9.04時代に作ったスクリプトを動かしたらまともに動かないんでやんの。
調べたらnawk内でmatchを使ったあとのRSTART(検索した文字の開始位置)と
RLENGTH(検索文字の長さ)がバイト単位になってた。
あれ? 前は文字数単位じゃなかったかと思いつつ、gawkだと文字数単位で扱ってくれるらしいので
gawkをインストールしたら、nawkの挙動も文字数単位になりやがった(怒
例を挙げると
echo "あいうえお" | nawk ' { match($0,"お"); print "rstart=",RSTART,"rlength=",RLENGTH; } '
これでgawkがないと rstart= 13 rlength= 3 なのがgawk導入後には rstart= 5 rlength= 1 になる。
gawkがあるかどうかで、標準で入ってるnawkの挙動も変わるなんて……
ここで思いだしたのが、9.04時代には試験的にgawkもインストールしていたということ。
スクリプトを作ったときは素のnawkの動作でなかったのか。
いや待て、素のnawkでないだと?
試しにnawkでは使えないはずのgensub関数を使ってみたら、nawkのなかで動いた。
gawkをいれたら、nawkを使ったつもりでも内部的にはgawkが動いてるのか。
ふざけんな。gawkがあろうとなかろうとnawkはnawkで独立させとけよ!
半日無駄になったじゃねーか。