tail by awk ― 2011年05月26日 18時34分01秒
awk の配列はいわゆる連想配列で、任意の鍵をインデックスとして用いて値を保存することが出来る。もちろん、数字を用いても良い。
一つの制約として、変数を配列として用いると、それ以降は配列としてしか使えなくなる。スクリプトが大きくなると、意図せずに混ぜてしまいエラーになることがある。
単純に tail で十行表示する。
% tail /etc/services
isode-dua 17007/udp
biimenu 18000/tcp #Beckman Instruments, Inc.
biimenu 18000/udp #Beckman Instruments, Inc.
wnn4 22273/tcp wnn6 #Wnn4 (Japanese input)
wnn4_Cn 22289/tcp wnn6_Cn #Wnn4 (Chinese input)
wnn4_Kr 22305/tcp wnn6_Kr #Wnn4 (Korean input)
wnn4_Tw 22321/tcp wnn6_Tw #Wnn4 (Taiwanse input)
wnn6_DS 26208/tcp #Wnn6 (Dserver)
dbbrowse 47557/tcp #Databeam Corporation
dbbrowse 47557/udp #Databeam Corporation
まず最初の実装は単純に配列の 0 から 9 に入力行を保持する。一行読む毎に、一行ずつ動かして、常に十行保持している。愚直で遅い実装だが、END 句では単純に print すれば良い。
% nawk '{for(i = 9; i >=0; i--)line[i+1] = line[i]; line[0]=$0}END{for(i = 9; i >=0; i--)print line[i]}' /etc/services
isode-dua 17007/udp
biimenu 18000/tcp #Beckman Instruments, Inc.
biimenu 18000/udp #Beckman Instruments, Inc.
wnn4 22273/tcp wnn6 #Wnn4 (Japanese input)
wnn4_Cn 22289/tcp wnn6_Cn #Wnn4 (Chinese input)
wnn4_Kr 22305/tcp wnn6_Kr #Wnn4 (Korean input)
wnn4_Tw 22321/tcp wnn6_Tw #Wnn4 (Taiwanse input)
wnn6_DS 26208/tcp #Wnn6 (Dserver)
dbbrowse 47557/tcp #Databeam Corporation
dbbrowse 47557/udp #Databeam Corporation
今回の要点。
- 連想配列
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2011/05/26/5881139/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。