tail by awk 2 ― 2011年05月28日 14時13分02秒
% nawk '{line[NR % 10] = $0}END{for(i = 0; i < 10; i++)print line[(NR + i) % 10]}' /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
%
演算子を使って、出力する行を決める。余計な行の移動が無くなったので、プログラムも若干簡潔になった。
% 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
awk のプログラムは他の言語とは異なる。他の言語では、全体としてどう処理するかを考えてプログラムを書く。例えば、ファイルを開き、一行ずつ読み込みながら何をするのかを考えてから、一行ずつの処理を書く。awk では、一行ごとをどのように処理すれば良いのかを考えてから、プログラムを書く。また、そこらへんが awk 初心者にとっての、違和感にもなっている。
今回の要点。
-
NR
変数 -
%
演算子
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2011/05/28/5886000/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。