【busybox记录】【shell指令】numfmt

目录

内容来源:

【GUN】【numfmt】指令介绍

简介

通用选项

可能的unit

【busybox】【numfmt】指令介绍

【linux】【numfmt】指令介绍

使用示例:

将单个数字 / 转换为人类表示:

从' SI '转换到' IEC '刻度

指定输入和输出刻度后,支持定义的最大前缀:

从输入文件/管道输入转换单个字段

输出可以使用 --padding或 --format来调整:

对于支持分组数字的区域设置,

常用组合指令:

指令不常用/组合用法还需继续挖掘:


内容来源:

        GUN : Coreutils - GNU core utilities

        busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客

【GUN】【numfmt】指令介绍

简介

numfmt:重新格式化数字
numfmt 读取各种表示形式的数字,并根据需要重新格式化它们。最常见的用法是将数字与人类表示进行转换(例如' 4G ' → ' 4,000,000,000 ')。
numfmt [option]... [number]
numfmt 根据指定的选项转换命令行上的每个数字(见下文)。
如果没有给出数字,则从标准输入读取数字。
numfmt 可以选择从特定列中提取数字,保持适当的行填充和对齐。退出状态为0表示成功,非0表示失败。
有关退出状态的其他信息,请参阅 --invalid。

通用选项

程序接受以下选项。请参见第2章[常用选项],第2页。
‘--debug’打印(到标准错误)关于可能错误使用的警告消息。
‘-d d’
‘--delimiter=d’使用字符d作为输入字段分隔符(默认为空白)。使用非默认分隔符将关闭自动填充。
‘--field=fields’转换输入字段字段中的数字(默认值:1)。fields支持裁剪样式字段范围:N    第N个字段,从1开始数N-   从第N个字段,到行尾N-M  从N到M的域(含)-M   从第一个字段到第M个字段(含)-    所有字段
‘--format=format’使用print样式的浮动格式字符串。格式字符串必须包含一个' %f '指令,可选地使用‘'’, ‘-’, ‘0’,宽度或精度修饰符。‘'’ 修饰符将启用 --grouping, '-' 修饰符将启用左对齐的 --padding, width修饰符将启用右对齐的 --padding。‘0’ 宽度修饰符(不带'-'修饰符)将在数字上生成前导零,直至指定的宽度。像“%.1f”这样的精度规范将覆盖从输入数据确定的精度或由于 --to选项自动缩放而设置的精度。
‘--from=unit’根据单位自动缩放输入数字。参见下面的单位。默认值是无缩放,这意味着后缀(例如' M ', ' G ')将触发错误。
‘--from-unit=n’指定输入单位大小(而不是默认的1)。当输入数字表示其他单位时使用此选项(例如,如果输入数字' 10 '表示512字节的10个单位,则使用' --from-unit=512 ')。后缀用' --from=auto '来处理。
‘--grouping’根据当前地区的分组规则对输出数字中的数字进行分组(例如,千位分隔符,通常为‘.’(点)或','(逗号)。此选项在' POSIX/C '语言环境中不起作用。
‘--header[=n]’打印前n行(默认为1行),不进行任何转换。
‘--invalid=mode’输入错误的默认操作是立即退出,状态码为2。--invalid=‘abort’ 显式指定此默认模式。使用' fail '模式,为每个转换错误打印警告,并以状态2退出。使用' warn '模式时,即使存在转换错误,也以状态0退出;使用' ignore '模式时,甚至不打印诊断信息。
‘--padding=n’通过添加空格,将输出数字填充为n个字符。如果n是正数,则数字将向右对齐。如果n是负数,数字将左对齐。默认情况下,数字根据输入行的宽度自动对齐(仅使用默认分隔符)。
‘--round=method’在转换数字表示时,根据方法将数字四舍五入,可以是‘up’, ‘down’, ‘from-zero’ (默认), ‘towards-zero’‘nearest’。
‘--suffix=suffix’在输出数字中添加' SUFFIX ',并在输入数字中接受可选的' SUFFIX '。
‘--to=unit’根据单位自动缩放输出数字。参见下面的单位。默认值是无缩放,这意味着数字的所有数字都被打印出来。
‘--to-unit=n’指定输出单位大小(而不是默认的1)。当输出数字表示其他单位时使用此选项(例如,要在1kB块中表示' 4,000,000 '字节,使用‘--to=si --to-unit=1000’ )。后缀用' --from=auto '来处理。
‘-z’
‘--zero-terminated’用零字节而不是换行符(ASCII LF)分隔项。即,将输入视为由ASCII NUL分隔的项,并以ASCII NUL终止输出项。这个选项可以与' perl -0 '或' find -print0 '和' xargs -0 '结合使用,它们做同样的事情,以便可靠地处理任意文件名(甚至那些包含空格或其他特殊字符的文件名)。使用-z时,换行符被视为字段分隔符。

可能的unit

下面是使用 --from=UNITS 和 --to=UNITS 的可能的单位选项:
none不执行缩放。对于输入数字,不接受后缀,数字后面的任何尾随字符都将触发错误。对于输出数字,将打印数字的所有数字。
si根据国际单位制(SI)标准自动缩放数字。对于输入数字,接受以下后缀之一。对于输出数字,大于1000的值将被舍入,并使用以下后缀之一打印:‘K’ => 10001 = 103 (Kilo) (uppercase accepted on input)‘k’ => 10001 = 103 (Kilo) (lowercase used on output)‘M’ => 10002 = 106 (Mega)‘G’ => 10003 = 109 (Giga)‘T’ => 10004 = 1012 (Tera)‘P’ => 10005 = 1015 (Peta)‘E’ => 10006 = 1018 (Exa)‘Z’ => 10007 = 1021 (Zetta)‘Y’ => 10008 = 1024 (Yotta)‘R’ => 10009 = 1027 (Ronna)‘Q’ => 100010 = 1030 (Quetta)
iec根据国际电工委员会(IEC)标准的自动刻度数字。对于输入数字,接受以下后缀之一。对于输出数字,大于1024的值将被舍入,并使用以下后缀之一打印:‘K’ => 10241 = 210 (Kibi) (uppercase used on output)‘k’ => 10241 = 210 (Kibi) (lowercase accepted on input)‘M’ => 10242 = 220 (Mebi)‘G’ => 10243 = 230 (Gibi)‘T’ => 10244 = 240 (Tebi)‘P’ => 10245 = 250 (Pebi)‘E’ => 10246 = 260 (Exbi)‘Z’ => 10247 = 270 (Zebi)‘Y’ => 10248 = 280 (Yobi)‘R’ => 10249 = 290 (Robi)‘Q’ => 102410 = 2100 (Quebi)iec选项使用单个字母后缀(例如' G '),这不是完全标准的,因为iec标准建议使用两个字母的符号(例如' Gi ') -但在实践中,这种方法很常见。与iec-i选项比较。
iec-i根据国际电工委员会(IEC)标准的自动刻度数字。对于输入数字,接受以下后缀之一。对于输出数字,大于1024的值将被舍入,并使用以下后缀之一打印:‘Ki’ => 10241 = 210 (Kibi) (uppercase used on output)‘ki’ => 10241 = 210 (Kibi) (lowercase accepted on input)‘Mi’ => 10242 = 220 (Mebi)‘Gi’ => 10243 = 230 (Gibi)‘Ti’ => 10244 = 240 (Tebi)‘Pi’ => 10245 = 250 (Pebi)‘Ei’ => 10246 = 260 (Exbi)‘Zi’ => 10247 = 270 (Zebi)‘Yi’ => 10248 = 280 (Yobi)‘Ri’ => 10249 = 290 (Robi)‘Qi’ => 102410 = 2100 (Quebi)iec-i选项使用两个字母的后缀符号(例如' Gi '),正如iec标准所建议的那样,但这在实践中并不常见。与iec选项比较。
autoauto只能和 --from连用。使用这种方法,带有单字母后缀的数字(如“K”)被解释为SI值,带有双字母后缀的数字(如“Ki”)被解释为IEC值。

【busybox】【numfmt】指令介绍

NA

【linux】【numfmt】指令介绍

[root@localhost bin]# numfmt --help
Usage: numfmt [OPTION]... [NUMBER]...
Reformat NUMBER(s), or the numbers from standard input if none are specified.必选参数对长短选项同时适用。--debug          print warnings about invalid input-d, --delimiter=X    use X instead of whitespace for field delimiter--field=FIELDS   replace the numbers in these input fields (default=1)see FIELDS below--format=FORMAT  use printf style floating-point FORMAT;see FORMAT below for details--from=UNIT      auto-scale input numbers to UNITs; default is 'none';see UNIT below--from-unit=N    specify the input unit size (instead of the default 1)--grouping       use locale-defined grouping of digits, e.g. 1,000,000(which means it has no effect in the C/POSIX locale)--header[=N]     print (without converting) the first N header lines;N defaults to 1 if not specified--invalid=MODE   failure mode for invalid numbers: MODE can be:abort (default), fail, warn, ignore--padding=N      pad the output to N characters; positive N willright-align; negative N will left-align;padding is ignored if the output is wider than N;the default is to automatically pad if a whitespaceis found--round=METHOD   use METHOD for rounding when scaling; METHOD can be:up, down, from-zero (default), towards-zero, nearest--suffix=SUFFIX  add SUFFIX to output numbers, and accept optionalSUFFIX in input numbers--to=UNIT        auto-scale output numbers to UNITs; see UNIT below--to-unit=N      the output unit size (instead of the default 1)-z, --zero-terminated    以 NUL 字符而非换行符作为行尾分隔符--help		显示此帮助信息并退出--version		显示版本信息并退出UNIT options:none       no auto-scaling is done; suffixes will trigger an errorauto       accept optional single/two letter suffix:1K = 1000,1Ki = 1024,1M = 1000000,1Mi = 1048576,si         accept optional single letter suffix:1K = 1000,1M = 1000000,...iec        accept optional single letter suffix:1K = 1024,1M = 1048576,...iec-i      accept optional two-letter suffix:1Ki = 1024,1Mi = 1048576,...FIELDS supports cut(1) style field ranges:N    N'th field, counted from 1N-   from N'th field, to end of lineN-M  from N'th to M'th field (inclusive)-M   from first to M'th field (inclusive)-    all fields
Multiple fields/ranges can be separated with commasFORMAT must be suitable for printing one floating-point argument '%f'.
Optional quote (%'f) will enable --grouping (if supported by current locale).
Optional width value (%10f) will pad output. Optional zero (%010f) width
will zero pad the number. Optional negative values (%-10f) will left align.
Optional precision (%.1f) will override the input determined precision.Exit status is 0 if all input numbers were successfully converted.
By default, numfmt will stop at the first conversion error with exit status 2.
With --invalid='fail' a warning is printed for each conversion error
and the exit status is 2.  With --invalid='warn' each conversion error is
diagnosed, but the exit status is 0.  With --invalid='ignore' conversion
errors are not diagnosed and the exit status is 0.Examples:$ numfmt --to=si 1000-> "1.0K"$ numfmt --to=iec 2048-> "2.0K"$ numfmt --to=iec-i 4096-> "4.0Ki"$ echo 1K | numfmt --from=si-> "1000"$ echo 1K | numfmt --from=iec-> "1024"$ df -B1 | numfmt --header --field 2-4 --to=si$ ls -l  | numfmt --header --field 5 --to=iec$ ls -lh | numfmt --header --field 5 --from=iec --padding=10$ ls -lh | numfmt --header --field 5 --from=iec --format %10fGNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 numfmt 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/numfmt>
或者在本地使用:info '(coreutils) numfmt invocation'

使用示例:

将单个数字 / 转换为人类表示:

$ numfmt --to=si 500000

500k

$ numfmt --to=iec 500000

489K

$ numfmt --to=iec-i 500000

489Ki

$ numfmt --from=si 1M

1000000

$ numfmt --from=iec 1M

1048576

# with '--from=auto', M=Mega, Mi=Mebi

$ numfmt --from=auto 1M

1000000

$ numfmt --from=auto 1Mi

1048576

从' SI '转换到' IEC '刻度

(例如,当驱动器的容量被宣传为' 1TB '时,而检查驱动器的容量给出较低的值):

$ numfmt --from=si --to=iec 1T

932G

指定输入和输出刻度后,支持定义的最大前缀:

$ numfmt --from=si --to=iec-i 2000R

1.6Qi

从输入文件/管道输入转换单个字段

(这些人为的示例仅用于演示目的,因为ls和df都支持——human-readable选项以人类可读的格式输出大小):

#第三个字段(文件大小)将以SI表示方式显示

$ ls -log | numfmt --field 3 --header --to=si | head -n4

-rw-r--r-- 1 94k Aug 23 2011 ABOUT-NLS

-rw-r--r-- 1 3.7k Jan 7 16:15 AUTHORS

-rw-r--r-- 1 36k Jun 1 2011 COPYING

-rw-r--r-- 1 0 Jan 7 15:15 ChangeLog

# Second field (size) will be shown in IEC representation

$ df --block-size=1 | numfmt --field 2 --header --to=iec | head -n4

File system 1B-blocks Used Available Use% Mounted on

rootfs 132G 104741408 26554036 80% /

tmpfs 794M 7580 804960 1% /run/shm

/dev/sdb1 694G 651424756 46074696 94% /home

输出可以使用 --padding或 --format来调整:

# Pad to 10 characters, right-aligned

$ du -s * | numfmt --to=si --padding=10

2.5k config.log

108 config.status

1.7k configure

20 configure.ac

# Pad to 10 characters, left-aligned

$ du -s * | numfmt --to=si --padding=-10

2.5k config.log

108 config.status

1.7k configure

20 configure.ac

# Pad to 10 characters, left-aligned, using 'format'

$ du -s * | numfmt --to=si --format="%10f"

2.5k config.log

108 config.status

1.7k configure

20 configure.ac

# Pad to 10 characters, left-aligned, using 'format'

$ du -s * | numfmt --to=si --padding="%-10f"

2.5k config.log

108 config.status

1.7k configure

20 configure.ac

对于支持分组数字的区域设置,

使用 --grouping或 --format可以进行分组。在' POSIX '区域设置中,分组被静默忽略:

$ LC_ALL=C numfmt --from=iec --grouping 2G

2147483648

$ LC_ALL=en_US.utf8 numfmt --from=iec --grouping 2G

2,147,483,648

$ LC_ALL=ta_IN numfmt --from=iec --grouping 2G

2,14,74,83,648

$ LC_ALL=C numfmt --from=iec --format="==%'15f==" 2G

== 2147483648==

$ LC_ALL=en_US.utf8 numfmt --from=iec --format="==%'15f==" 2G

== 2,147,483,648==

$ LC_ALL=en_US.utf8 numfmt --from=iec --format="==%'-15f==" 2G

==2,147,483,648 ==

$ LC_ALL=ta_IN numfmt --from=iec --format="==%'15f==" 2G

== 2,14,74,83,648==

常用组合指令:

NA

指令不常用/组合用法还需继续挖掘:

NA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redisson 总结

1. 基础使用 1.1 引入依赖 <dependencies><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId></dependency> </dependencies>包含的依赖如下 1.2 配置文件 其实默认主机就…

Java基础总结(2)

1.实例方法和静态方法的区别 调用方式不同&#xff1a;静态方法可以通过类名.方法名直接调用&#xff0c;也可以通过当前类的实例对象.方法名来调用&#xff0c;但是实例方法只能通过后者来访问访问类的成员存在限制&#xff1a;在静态方法内部&#xff0c;只能访问类的静态成员…

【计网】从零开始掌握序列化 --- JSON实现协议 + 设计 传输\会话\应用 三层结构

唯有梦想才配让你不安&#xff0c; 唯有行动才能解除你的不安。 --- 卢思浩 --- 从零开始掌握序列化 1 知识回顾2 序列化与编写协议2.1 使用Json进行序列化2.2 编写协议 3 封装IOService4 应用层 --- 网络计算器5 总结 1 知识回顾 上一篇文章我们讲解了协议的本质是双方能够…

WPF DataGrid 单元格居中,头部居中,点击行改变背景色。

我得全局样式都写在了App.XAML文件下的ResourceDictionary里&#xff0c;方便全局引用 DataGrid样式和点击改变行背景色的触发器(BasedOn继承的是UI框架的样式&#xff0c;若无则删除&#xff0c;触发器还有鼠标移动事件等&#xff0c;按需自行修改添加) <Style x:Key&quo…

安卓13长按电源按键直接关机 andriod13不显示关机对话框直接关机

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有些设备需要在长按电源键的时候,直接关机。不需要弹出对话框进行询问。 2.问题分析 过滤电源按键,需要在系统里面处理的话,那么我们需要熟悉android的事件分发,然后再…

Golang | Leetcode Golang题解之第420题强密码检验器

题目&#xff1a; 题解&#xff1a; func strongPasswordChecker(password string) int {hasLower, hasUpper, hasDigit : 0, 0, 0for _, ch : range password {if unicode.IsLower(ch) {hasLower 1} else if unicode.IsUpper(ch) {hasUpper 1} else if unicode.IsDigit(ch)…

【2025】儿童疫苗接种预约小程序(源码+文档+解答)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

hackmyvm靶场--zon

环境 攻击机kali 靶机 未知 主机探测 因为在同一个局域网内使用ARP协议探测存活主机 靶机为192.168.56.128 端口探测 常见的80和22端口 那么一定是寻找web漏洞拿shell了 后台扫描 后台扫描常用dirsearch和gobuster,有时候小字典可能不太行&#xff0c;可以尝试换个大点…

使用AVL树实现Map

一、数组在裂变扩容时可能会出现环、在数组元素转为链表之后选择尾插法插入节点、数组到链表到AVL到RBT的转换 1、数组在裂变扩容时链表中的节点计算出来的位置可能也会发生变化&#xff0c;在多线程情况下调整节点位置可能会出现环。 2、数组中的数组元素转为链表后插入新节点…

设计模式 享元模式(Flyweight Pattern)

享元模式 简绍 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它的目的是通过共享技术来有效地支持大量细粒度的对象。享元模式可以极大地减少内存的使用&#xff0c;从而提高程序的性能。它特别适用于需要创建大量相似对象的场景&#…

Cypress安装与启动(开始学习记录)

一 Cypress安装 使用npm安装 1.查看node.js npm的版本&#xff0c;输入 npm --version 和 node --version&#xff0c;node.js没安装的可以去中文网下载最新稳定版安装&#xff0c;npm不建议升级到最新版本&#xff0c;会导致安装Cypress时Error: Cannot find module ansi-st…

在已安装的openresty上添加安装upstream模块报错的解决以及使用Consul服务发现时定时变更nginx的upstream的shell脚本

一、在已经安装好的openresty环境上添加安装upstream模块报错&#xff1a; 在已经安装好的openresty环境上添加安装upstream模块报错&#xff1a;http upstream check module can not find any check server, make sure you ve added the check 的问题解决。 服务器上已经安装好…

idea中java及java web项目的常见问题

1、乱码问题&#xff0c;主要有几处地方&#xff0c;需要检查。 ①确保文件编码&#xff0c;其实主要就是在idea启动文件中&#xff0c;增加了 -Dfile.encodingUTF-8的设置 ②编辑器默认编码&#xff0c;都改为UTF-8 ③Tomcat的运行配置&#xff0c;编码也改为UTF-8,同样使用…

SpringBoot3核心特性-核心原理

目录 传送门前言一、事件和监听器1、生命周期监听2、事件触发时机 二、自动配置原理1、入门理解1.1、自动配置流程1.2、SPI机制1.3、功能开关 2、进阶理解2.1、 SpringBootApplication2.2、 完整启动加载流程 三、自定义starter1、业务代码2、基本抽取3、使用EnableXxx机制4、完…

zynq的PS端mac与RTL8211F的连接要点

目录 1 VCCO_MIO12 PS_MIO_VREF3 PS的引脚4 RXDLY TXDLY5 ZYNQ的MAC可以调整延时吗 1 VCCO_MIO1 接1.8V 2 PS_MIO_VREF 接0.9V&#xff0c;可通过电阻分压 可通过电阻分压 3 PS的引脚 4 RXDLY TXDLY RXDLY RXD[0] TXDLY RXD[1] 与XC7Z020的PS端MAC连接&#xff0c;必须…

CVE-2024-2389 未经身份验证的命令注入

什么是 Progress Flowmon? Progress Flowmon 是一种网络监控和分析工具,可提供对网络流量、性能和安全性的全面洞察。Flowmon 将 Nette PHP 框架用于其 Web 应用程序。 未经身份验证的路由 我们开始在“AllowedModulesDecider.php”文件中枚举未经身份验证的端点,这是一个描…

1.pytest基础知识(默认的测试用例的规则以及基础应用)

一、pytest单元测试框架 1&#xff09;什么是单元测试框架 单元测试是指再软件开发当中&#xff0c;针对软件的最小单位&#xff08;函数&#xff0c;方法&#xff09;进行正确性的检查测试。 2&#xff09;单元测试框架 java&#xff1a;junit和testing python&#xff1a;un…

arcgisPro地理配准

1、添加图像 2、在【影像】选项卡中&#xff0c;点击【地理配准】 3、 点击添加控制点 4、选择影像左上角格点&#xff0c;然后右击填入目标点的投影坐标 5、依次输入四个格角点的坐标 6、点击【变换】按钮&#xff0c;选择【一阶多项式&#xff08;仿射&#xff09;】变换 7…

基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图

目录 1. 项目结构 2. Maven依赖配置 (pom.xml) 3. 实现后端服务 4. 配置文件 (application.properties) 5. 启动项目 6. 访问页面 实现基于北斗卫星的车辆定位和轨迹图的Maven工程&#xff08;使用模拟数据&#xff09;&#xff0c;我们将使用以下技术&#xff1a; Spri…

使用c#制作一个小型桌面程序

封装dll 首先使用visual stdio 创建Dll新项目,然后属性管理器导入自己的工程属性表&#xff08;如果没有可以参考visual stdio 如何配置opencv等其他环境&#xff09; 创建完成后 系统会自动生成一些文件&#xff0c;其中 pch.cpp 先不要修改&#xff0c;pch.h中先导入自己需…