フォーマットの問題


2007-10  14,807 1,604  29,600
2007-09   15,173  521  35,853
2007-08  12,799 1,236   516
2007-07   5,780  416  37,135

というファイルがあり、以下のように出力したいそうです。

2007-10    14,807 1,604    29,600
2007-09    15,173   521    35,853
2007-08    12,799 1,236       516
2007-07     5,780   416    37,135

そのためにやったことが以下のものです。

cat file| awk '{printf "%-11s%-7s%-9s%s\n",$1,$2,$3,$4}'

回答は以下のとおり。

$ awk '{printf "%7s%9s%9s%9s\n",$1,$2,$3,$4}' file
2007-10   14,807    1,604   29,600
2007-09   15,173      521   35,853
2007-08   12,799    1,236      516
2007-07    5,780      416   37,135

これを UUOC だと Ed は言っていますが、個人的には UUOC は悪くないと教えられてきたので、先頭に cat があっても悪いとあまり思っていなかったりします。先頭の cat は不要ですが、処理のオーバーヘッドが MS-DOS よりも少なく済む、つまりパイプを使うことは Unix の醍醐味のひとつだと師匠の一人に教わった記憶があります。既に 12 年前ですが・・・。