awkコマンドで書く場合によく使っている、printfの書式をサンプルコードと合わせてご紹介します。

スポンサーリンク

awkのprintfの書式

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

awkのprintfの書式を下記の形式で書くことができます。

%[フラグ][出力幅][.精度]型

よく使う整数と浮動小数点数のprintf出力について、サンプルコードで書式の例をご紹介したいと思います。

スポンサーリンク

整数を出力するprintfの書式

サンプルコード

整数を出力する場合のprintfの書式のサンプルコードになります。

 $ cat sample.awk 
#!/bin/sh
cat in.txt | awk '		
	BEGIN{
		x=7.9
		printf "%d\n", x		#整数を出力
		printf "%+d\n", x	#+-の符号を付けて整数を出力
		printf "% d\n", x	#先頭にスペースを入れて整数を出力
		printf "%6d\n", x	#右詰め、6桁で整数を出力
		printf "%-6d#\n", x	#左詰め、6桁で整数を出力
		printf "%06d\n", x	#右詰め、6桁で整数を出力(数値出力以外の桁は0埋め)
	}
'

下記が実行結果となります。
 $ ./sample.awk 
7
+7
 7
     7
7     #
000007

スポンサーリンク

単に整数を出力

単に書式に%dを指定するだけです。

		x=7.9
		printf "%d\n", x		#整数を出力

出力結果です。
7

+-の符号を付けて整数を出力

フラグに+を指定して書式を%+dとします。

		printf "%+d\n", x	#+-の符号を付けて整数を出力

出力結果です。先頭に符号が付けられていることが確認できます。

+7

先頭にスペースを入れて整数を出力

負の整数の出力と出力幅を揃えたいときなどに使えます。
フラグにスペースを指定し、書式は% dとなります。

		printf "% d\n", x	#先頭にスペースを入れて整数を出力

出力結果です。先頭にスペースが入っているのが確認できます。
 7
 

右詰めで出力幅を指定して整数を出力

出力幅に数値を指定します。例えば、出力幅を6桁にしたい場合は、書式を%6dとします。
この場合は、右詰めの出力となります。

		printf "%6d\n", x	#右詰め、6桁で整数を出力

出力結果です。右詰めで6桁となっていて、先頭の5桁分はスペースで埋められています。
     7

左詰めで出力幅を指定して整数を出力

左詰めの場合はフラグに-をつけます。例えば、左詰めで出力幅を6桁にしたい場合は、書式を%-6dとします。

		printf "%-6d#\n", x	#左詰め、6桁で整数を出力

出力結果です。6桁となっているのがわかり易いように、語尾に#を入れています。
左詰めで6桁となっていて、後方の5桁分はスペースで埋められています。
7     #

0埋めをして整数を出力

指定した出力幅で、出力された数値以外の余った箇所を0で埋めたい場合は、フラグに0を指定します。
例えば、出力幅を6桁で整数を出力して、0埋めをしたい場合は書式を%06dと指定します。

		printf "%06d\n", x	#右詰め、6桁で整数を出力(数値出力以外の桁は0埋め)

出力結果です。右詰めにしているので、先頭が0埋めをされているのが確認できます。
000007

浮動小数点数を出力するprintfの書式

サンプルコード

 $ cat sample2.awk 
#!/bin/sh
cat in.txt | awk '		
	BEGIN{
		x=7.9
		printf "%.2f\n", x 	#少数第2位までを、浮動小数点数として出力
		printf "% .2f\n", x 	#少数第2位までを、先頭にスペースを入れて浮動小数点数として出力
		printf "%6.2f\n", x 	#右詰め、6桁、少数第2位までを、浮動小数点数として出力
		printf "%+6.2f\n", x 	#右詰め、6桁、少数第2位までを、符号を付けて浮動小数点数として出力
		printf "%-6.2f#\n", x 	#左詰め、6桁、少数第2位までを、浮動小数点数として出力
	}
'

下記が実行結果となります。
 $ ./sample2.awk 
7.90
 7.90
  7.90
 +7.90
7.90  #

小数点第n位までを浮動小数点数として出力

精度を指定して、例えば、小数点第2位までを出力したい場合は、書式を%.2fとします。

		printf "%.2f\n", x 	#少数第2位までを、浮動小数点数として出力

出力結果になります。小数点第2位まで出力されているのが確認できます。
7.90

先頭にスペースを入れて、小数点第n位までを浮動小数点数として出力

先頭にスペースを入れる場合は、フラグにスペースを指定します。例えば、小数点第2位までを出力して先頭にスペースを入れる場合は。書式を% .2fとします。

		printf "% .2f\n", x 	#少数第2位までを、先頭にスペースを入れて浮動小数点数として出力

出力結果です。先頭にスペースが入っていて、小数点第2位まで出力されているのが確認できます。
 7.90
 

右詰め、m桁で、小数点第n位までを浮動小数点数として出力

右詰めに出力する桁数を指定する場合は、出力幅に桁数を指定します。例えば、右詰め、6桁で、小数点第2位まで出力する場合は、書式を%6.2fとします。

		printf "%6.2f\n", x 	#右詰め、6桁、少数第2位までを、浮動小数点数として出力

出力結果です。6桁で出力されていて、先頭にスペースが埋められています。
  7.90
  

符号を付けて浮動小数点数を出力

符号を付ける場合は、フラグに+を指定します。例えば、右詰め、6桁で、少数第2位までを、符号を付けて浮動小数点数として出力したい場合は、書式を%+6.2fとします。

		printf "%+6.2f\n", x 	#右詰め、6桁、少数第2位までを、符号を付けて浮動小数点数として出力

下記が出力結果です。先頭に+の符号がついているのが確認できます。
 +7.90
 

左詰めで浮動小数点数を出力

左詰めとする場合は、フラグに-を指定します。例えば、左詰め、6桁で、少数第2位までを、浮動小数点数として出力したい場合は、書式を%-6.2fとします。

		printf "%-6.2f#\n", x 	#左詰め、6桁、少数第2位までを、浮動小数点数として出力

下記が出力で、左詰めなので、後方の2桁がスペースとなっているのが確認できます。
後方のスペースをわかりやすくするために、語尾に#を入れています。
7.90  #

スポンサーリンク