本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、数値を読みやすい単位で整形したり、換算して表示したりする「numfmt」コマンドです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、数値を読みやすい単位で整形したり、換算して表示したりする「numfmt」コマンドです。
「numfmt」は数値を読みやすい単位で整形して表示するコマンドです。「k(キロ)」や「M(メガ)」などの換算も可能です。
負の数や小数点を含む数も整形できますが、単位換算では正の数だけを受け付けます。
numfmt [オプション] [値……]
※[ ]は省略可能な引数を示しています。
短いオプション | 長いオプション | 意味 |
---|---|---|
--from=単位 | kやMなどの単位を入力した場合の処理を決める(本文を参照) | |
--to=単位 | kやMなどの単位を出力するかどうかを指定する(本文を参照) | |
--from-unit=倍数 | 入力値を何倍にして出力するかを指定する(デフォルトは1、100を指定した場合、50が5000になる) | |
--to-unit=倍数 | 入力値を何分の1にして出力するかを指定する(デフォルトは1、100を指定した場合、5000が50になる、本文を参照) | |
--grouping | ロケールに従った桁指定(3桁を「,」で区切るなど)で表示する | |
--padding=桁数 | 表示桁数を指定する。正の数を指定した場合は空白で埋めて右寄せ、負の数の場合は左寄せで表示する | |
--format=書式 | printfの「%f」(連載第319回)を使用した浮動小数点数の書式を指定する(※1) | |
--round=方式 | 単位で割った結果、余りが出た場合の処理を「up(切り上げ)」「down(切り下げ)」「from-zero」(絶対値が大きくなる方向に切り上げ、デフォルト)、「towards-zero(絶対値が小さくなる方向に切り下げ)」「nearest(四捨五入)」から指定する | |
--suffix=接尾辞 | 数値の接尾辞を指定する(本文を参照) | |
-d 区切り文字 | --delimiter=区切り文字 | 区切り文字を指定する(デフォルトは空白文字、本文を参照) |
--field=番号 | 何番目の値を整形するかを指定する(デフォルトは1番目のフィールド) | |
--header=行数 | ヘッダの行数(変換対象外とする行数)を1以上で指定する。行数を指定しなかった場合は先頭行(1行目)を変換せず、2行目以降を変換して出力する | |
--invalid=モード | 数値以外が渡された場合の処理モードを「abort」(エラーとして中断する、デフォルト)、「fail」と「warn」(エラーメッセージを表示するが中断はしない)、「ignore」(無視して実行)で指定する | |
※1 使用できるのは整数部の桁数指定と「'」(3桁区切り)、「-」(左ぞろえ)のみで、小数点以下の桁数は指定できない。
「numfmt --format="書式" 数値」で、数値を書式に従って整形して表示します。使用できる書式は「%桁数f」と「%'f」です(画面1)。例えば「--format="%5f"」とすると数値を5桁の幅で表示し(※2)、「--format="%'f"」では数値を3桁区切りで表示します。
また、「numfmt --grouping 数値」のようにすると、ロケール設定に従った表示となります(※3)。
※2 この指定の場合、5桁よりも小さい数字を入力すると5桁になるよう左側に空白が入り、6桁以上だと整形しない。
※3 ロケールとはシステムにおける地域と言語の設定をいう。現在の設定を確認するには「locale」コマンド(連載第263回)を使う。
コマンドラインで数値を指定しなかった場合、標準入力から受け取った数値を表示します。この場合は、[CTRL]+[C]キーで処理を終了します。
numfmt --format="書式" 数値
(数値を%fで指定した書式で表示)
numfmt --format="%5f" 123
(123を5桁の幅で表示)(画面1)
numfmt --format="%'f" 10000
(10000を3桁区切りで表示)(画面1)
numfmt --format="%'8f" 10000
(10000を3桁区切りで8桁の幅で表示)(画面1)
numfmt --grouping 10000
(10000をシステムのロケールに従ったスタイルで表示)(画面1)
なお、ロケールによる違いを確認したい場合、例えば、「LC_NUMERIC=ロケール numfmt --grouping 数値」のように、一時的にロケールを変えることで実行できます(画面2)。
LC_NUMERIC=ja_JP numfmt --grouping 10000
(10000を日本語(日本)のスタイルで表示)(画面2)
LC_NUMERIC=fr_FR numfmt --grouping 10000
(10000をフランス語(フランス)のスタイルで10000を表示)(画面2)
LC_NUMERIC=fr_CH numfmt --grouping 10000
(10000をフランス語(スイス)のスタイルで10000を表示)(画面2)
Copyright © ITmedia, Inc. All Rights Reserved.