作者: Yさ
日時: 2008/3/2(12:41)
でびさん、こん??は。Yさです。


davi writes:

> のように、否定の条件式でいきなり変数宣言して
> その瞬間に有効となるのって、改めて考えると、
> なんだかすごいですよね。
自分は「(大域で、)宣言は不要」とだけ認識してるので(^^;)すごさが今一つ分からないのですが...


> 実は、prevって予約語があるのかと、ググってしまいました。
あぁプログラマの習慣(?)で伝統的によく使われる変数名を無意識に選んでしまう
からですかね。
例えば、今でも単純な繰り返し for(i=0; i<10; ++i){ ... } などに
変数名 i などを使うのがそれです。(起源は確かFORTRANの暗黙整数型変数だったかな)


> printfで$0を出しているのは、改行が付かないという性質を
> 使って次行をドンドン追記している、というテクと理解して
> 良いですか?
はい、そうです。
出力をフォーマットしたいとき printf を使うのはもちろんですが、
改行したいときは意識して"\n"する printf と、無条件に改行する print を
場面で使い分けてます。


> 暗黙に次行へ処理が移って、prev!=$1が成立するまで
> ループが回っているように読み取ったのですが、
パターンとアクションを順番に処理するのをループするawkの基本構造ですね。
# [TSabc:510] Re: 括弧の付け方って法則はあります?
  でも藤岡さんが書いてますが。


> ところでawkの場合、1レコードの最長文字数ってメモリ依存
> なのでしょうか。
 :
> たとえば、全ファイル1レコードにしちゃってから後処理する、
> みたいな富豪プログラミングも理論的にはできるのだろーか、
1レコードにできる文字数は処理系(≒awkインタプリタ本体)に依存している
気がしますが、文字数制限以内なら富豪プログラミングも可能でしょう。