numfmt続きです。
空白や改行だけでなく、区切り記号を指定することができます。
では、いつものように確認用の変換前データを作成。
takk@deb9:~/tmp$ seq -s, 1024 1024 `expr 1024 \* 8` 1024,2048,3072,4096,5120,6144,7168,8192 takk@deb9:~/tmp$
この,(カンマ)で区切られたデータを、区切り文字を指定せずにnumfmtへ渡すと、
takk@deb9:~/tmp$ !! | numfmt --to iec seq -s, 1024 1024 `expr 1024 \* 8` | numfmt --to iec numfmt: invalid suffix in input: `1024,2048,3072,4096,5120,6144,7168,8192' takk@deb9:~/tmp$
エラーになりました。
区切り文字の指定は、-dオプション(デリミタ)を使います。
,(カンマ)を指定してみましょう。
takk@deb9:~/tmp$ !-2 | numfmt -d, --to iec seq -s, 1024 1024 `expr 1024 \* 8` | numfmt -d, --to iec 1.0K,2048,3072,4096,5120,6144,7168,8192 takk@deb9:~/tmp$
おっと、全フィールド指定するための、–field -を忘れていました。
takk@deb9:~/tmp$ !-3 | numfmt -d, --to iec --field - seq -s, 1024 1024 `expr 1024 \* 8` | numfmt -d, --to iec --field - 1.0K,2.0K,3.0K,4.0K,5.0K,6.0K,7.0K,8.0K takk@deb9:~/tmp$
変換できましたね。
次は、K Mなどの単位ありからなしへの変換です。
–toの反対で、–fromを使います。
takk@deb9:~/tmp$ numfmt --from=iec 64K 65536 takk@deb9:~/tmp$
簡単ですね。
カンマ区切りでマトリクスを作ってみます。
takk@deb9:~/tmp$ for i in K M G T P;do seq -s, -f "%g$i" 5;done 1K,2K,3K,4K,5K 1M,2M,3M,4M,5M 1G,2G,3G,4G,5G 1T,2T,3T,4T,5T 1P,2P,3P,4P,5P takk@deb9:~/tmp$
作成した単位付きデータのマトリクスを、一気に単位なしに変換してみましょう。
takk@deb9:~/tmp$ !! | numfmt -d, --field - --from iec for i in K M G T P;do seq -s, -f "%g$i" 5;done | numfmt -d, --field - --from iec 1024,2048,3072,4096,5120 1048576,2097152,3145728,4194304,5242880 1073741824,2147483648,3221225472,4294967296,5368709120 1099511627776,2199023255552,3298534883328,4398046511104,5497558138880 1125899906842624,2251799813685248,3377699720527872,4503599627370496,5629499534213120 takk@deb9:~/tmp$
コメント