cat -n by awk2010年11月20日 13時19分33秒

awk での cat -n を書式も含めて合わせる。od で書式を調べてみる。

% cat -n | od -c
1
0000000                        1  \t   1  \n                            
0000011
% cat -n | od -X
1
0000000          20202020        31093120        0000000a                
0000011

五桁の行数の次にタブ、そして入力行と続くようだ。

awk での書式指定は printf 文 を使う。awk の printf 文はいわゆる C 言語の printf 文とほぼ同じ書式を受け付ける。第一引数は書式。そして、その後に書式に指定された分だけ余計に引数が読まれる。

print 文は改行なども自動で入れてくれるが、printf 文は書式に指定された様にしか出力を行なわない。自分で明示的に \n と改行を入れる必要がある。print 文から printf に書き変えた時に、忘れやすい。

print と printf 文に代表される print 文は変わっていて、引数には括弧を付けても、付けなくてもいい。例えば、print "abc"print("abc") は同じになる。他の関数の場合は、括弧を付けなければいけない。

例。


% nawk '{printf("%5d\t%s\n", NR, $0)}'
1
     1  1
% cat -n
1
     1  1
%

これで、出力の書式も含めて同じになった。

今回の要点。

  1. printf "書式", 引数
  2. printprintf の比較
  3. print 文の括弧