awkコマンドで書く場合によく使っている、printfの書式をサンプルコードと合わせてご紹介します。
スポンサーリンク
awkのprintfの書式
参考: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 #
スポンサーリンク