Bash字符串处理(与Java对照) - 18.格式化字符串

Bash字符串处理(与Java对照) - 18.格式化字符串

In Java

class Formatter

参见:http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax

 

String.format

static String     format(String format, Object... args)
          使用指定的格式字符串和参数返回一个格式化字符串。

 

 

参见:String.format函数使用方法介绍 http://blog.youkuaiyun.com/andycpp/article/details/1749700

 

System.out.printf

参见:http://www.java2s.com/Code/JavaAPI/java.lang/System.out.printf.htm

 

1.  System.out.printf('%b', String str )
2.  System.out.printf('%c', char ch )
3.  System.out.printf('%03d', int i )
4.  System.out.printf('%e', float )
5.  System.out.printf('%03f', float f)
6.  System.out.printf('%.2f', float f )
7.  System.out.printf('{%07.3f}', float f )
8.  System.out.printf('%f', float f )
9.  System.out.printf('%g', float f )
10.  System.out.printf('%h', float f )
11.  System.out.printf('%s', 5)
12.  System.out.printf('%s://%s/%s\n', String str1, String str2, String str3)
13.  System.out.printf('%1 s...', String str )
14.  System.out.printf('%5s', String str)
15.  System.out.printf('%-5s', String str) (2)
16.  System.out.printf( '%-10.10s %s', String word, int length )
17.  System.out.printf('%.5s', String str) (3)
18.  System.out.printf('%s', Date date )
19.  System.out.printf('%tc', Date date ) (lowercase t, lowercase c)
20.  System.out.printf('%tC', Date date ) (lowercase t, uppercase C)
21.  System.out.printf('%tD', Date date )
22.  System.out.printf('%tF', Date date )
23.  System.out.printf('%tr', Date date )
24.  System.out.printf('%tR',Date date )
25.  System.out.printf('%tT', Date date )
26.  System.out.printf('%tz', Date date )
27.  System.out.printf('%Tc', Date date ) (Uppercase T, lowercase c)
28.  System.out.printf('%1x, %1X', 0xCAFE )
29.  System.out.printf( Locale.CHINA, '%tc', Date date )
30.  System.out.printf( Locale.ITALIAN, '%tc', Date date )

 

In Bash

printf

man bash 写道
printf [-v var] format [arguments]
Write the formatted arguments to the standard output under the control of the format. The format is a
character string which contains three types of objects: plain characters, which are simply copied to
standard output, character escape sequences, which are converted and copied to the standard output, and
format specifications, each of which causes printing of the next successive argument. In addition to
the standard printf(1) formats, %b causes printf to expand backslash escape sequences in the correspond-
ing argument (except that \c terminates output, backslashes in \', \", and \? are not removed, and octal
escapes beginning with \0 may contain up to four digits), and %q causes printf to output the correspond-
ing argument in a format that can be reused as shell input.

The -v option causes the output to be assigned to the variable var rather than being printed to the
standard output.

The format is reused as necessary to consume all of the arguments. If the format requires more argu-
ments than are supplied, the extra format specifications behave as if a zero value or null string, as
appropriate, had been supplied. The return value is zero on success, non-zero on failure.
 
man 1 printf 写道
FORMAT controls the output as in C printf. Interpreted sequences are:

转义字符:
\" double quote
\NNN character with octal value NNN (1 to 3 digits)
\\ backslash
\a alert (BEL)
\b backspace
\c produce no further output
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\xHH byte with hexadecimal value HH (1 to 2 digits)
\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)
\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)

%% a single %
%b ARGUMENT as a string with ‘\’ escapes interpreted,

except that octal escapes are of the form \0 or \0NNN

and all C format specifications ending with one of diouxXfeEgGcs, with ARGUMENTs converted to proper type
first. Variable widths are handled.

 

如果你想对printf命令更深入的了解,参见 http://wiki.bash-hackers.org/commands/builtin/printf

 

打印换行

示例来自 http://ss64.com/bash/printf.html

 # Use \n to start a new line
$ printf "Two separate\nlines\n"         
Two separate
lines

 

[root@jfht ~]# printf "Two separate\nlines\n"
Two separate
lines
[root@jfht ~]# echo "Two separate\nlines\n"     
Two separate\nlines\n
[root@jfht ~]# echo -e "Two separate\nlines\n"
Two separate
lines

[root@jfht ~]# echo -n -e "Two separate\nlines\n"
Two separate
lines
[root@jfht ~]#

用0填充(Zero Padding)

技巧来自 Zero Padding in Bash  http://jonathanwagner.net/2007/04/zero-padding-in-bash/

创建从1到31为名的目录

for ((x=1;x<=31;x+=1)); do mkdir $x; done

一位数字前面加0

for ((x=1;x< =31;x+=1)); do mkdir `printf "%02d" $x`; done

 

例子来自 http://ss64.com/bash/printf.html

# Echo a list of numbers from 1 to 100, adding 3 digits of Zero padding
# so they appear as 001, 002, 003 etc:
$ for ((num=1;num<=100;num+=1)); do echo `printf "%03d" $num`; done

 

设置打印宽度、用空白填充

示例来自 http://linuxconfig.org/bash-printf-syntax-basics-with-examples

 

#/bin/bash

divider===============================
divider=$divider$divider

header="\n %-10s %8s %10s %11s\n"
format=" %-10s %08d %10s %11.2f\n"

width=43

printf "$header" "ITEM NAME" "ITEM ID" "COLOR" "PRICE"

printf "%$width.${width}s\n" "$divider"

printf "$format" \
Triangle 13  red 20 \
Oval 204449 "dark blue" 65.656 \
Square 3145 orange .7
 

[root@jfht ~]# ./table.sh
 Triangle   00000013        red       20.00
 Oval       00204449  dark blue       65.66
 Square     00003145     orange        0.70
[root@jfht ~]#

 

 

本文链接:http://codingstandards.iteye.com/blog/1198098   (转载请注明出处)

返回目录:Java程序员的Bash实用指南系列之字符串处理(目录) 

上节内容:Bash字符串处理(与Java对照) - 17.判断是否以另外的字符串结尾

下节内容:Bash字符串处理(与Java对照) - 19.查找字符的位置

 

Kafka数据迁移三模式:备份、导入与全栈迁移原理与Ubuntu 18.04实战 Apache Kafka 数据迁移并非简单复制,其本质是围绕消息存储模型展开的系统工程。核心在于理解日志段物理结构、时间戳语义(CreateTime/LogAppendTime)、偏移量(offset)元数据绑定及消费者组状态可移植性等底层原理。技术价值体现在保障RPO=0的灾备能力、支撑云迁移与集群升级、满足金融级数据一致性要求。典型应用场景包括跨机房平滑迁移、离线数据分析导入、混合云架构演进等。本文聚焦 Ubuntu 18.04 环境下 Kafka 2.7–2.8 版本的实操约束,深入解析 backup 阅读详情

相关推荐

Shell脚本入门:从零到自动化,掌握Linux运维核心技能

Shell脚本是Linux和Unix系统中实现自动化任务的核心技术,它通过将一系列命令、控制逻辑和数据处理打包成可执行文件,让计算机自动完成重复性工作。其原理基于系统Shell解释器逐行执行脚本中的命令,结合变量、条件判断、循环和函数等编程结构,实现复杂的流程控制。在技术价值上,Shell脚本以其直接调用系统命令、高效处理文件和进程、以及无缝粘合各种命令行工具的优势,成为运维工程师、后端开发者和系统管理员必备的技能。应用场景广泛,包括日常的日志文件批量重命名、服务器状态监控与告警、数据库定时备份等自动化运维

359

string.format 怎么使用换行符_Cygwin系列(六):使用Cygwin常见问题及应对

► 本文共5500余字,预计阅读时间14分钟,本文知乎连接:Cygwin系列(六):使用Cygwin常见问题及应对,同步发布于微信公众号。在本人使用Cygwin/Linux以及与群友、粉丝交流过程中,有些比较共性的问题,多次解答采坑背后的原因和应对措施,深感必要对这些典型的共性问题专门写文归纳,本着“折腾自己造福大家”的精神,写下此文。0x00 “未找到命令”在参照他人教程执行某些命令的时候,经...

weixin_39872257的博客 1044

ArduPilot 的 RTOS 选择:为何 ChibiOS 成为现代飞控的首选

本文深入探讨了ArduPilot选择ChibiOS作为现代飞控首选RTOS的原因。通过对比FreeRTOS和NuttX,ChibiOS凭借其50ns中断响应、1.2μs上下文切换时间和高效的资源管理脱颖而出,特别适合处理无人机飞控中的高频传感器融合和实时控制任务。文章还详细分析了ChibiOS在STM32硬件上的优化实践及其在无人机开发中的显著优势。

weixin_29161719的博客 567

Shell的格式化输出

1、使用echo进行格式化输出 2、使用printf进行格式化输出 1、使用echo进行格式化输出 显示转义字符 [root@yanta ~]# echo "\"This is a test\"" "This is a test" 读取变量并显示 使用 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量: #!/b...

水木梵华 2万+

​​WPF入门与XAML基础:从零开始构建你的第一个WPF应用​

本文是WPF入门系列首篇,详细介绍WPF的核心优势与开发环境搭建。通过创建第一个WPF项目,解析MainWindow.xaml和App.xaml等关键文件,深入讲解XAML基础语法,包括属性赋值、命名空间和事件绑定。最后通过按钮点击交互示例演示WPF应用程序运行流程,帮助开发者快速上手WPF开发,为后续学习布局系统和数据绑定等高级主题奠定基础。

Hare的博客 3276

电子发票二维码背后的秘密:10分钟看懂校验码、加密字符含义与防伪设计

本文深入解析电子发票二维码的结构与防伪设计,揭示校验码和加密字符的生成原理及验证方法。通过实际案例和技术细节,帮助财务人员理解电子发票的安全机制,提升防伪识别能力,确保税务合规。

weixin_29248611的博客 528

shell格式化字符串

假如你有以下代码: 1 TEMP_SQL="SELECT count(uid) from ${TABLE_PREFIX}_%s;" 2 3 SUM=0 4 for((i=${MIN};i&lt;${MAX};i++)); 5 do 6 echo "${TABLE_PREFIX}_${i}" 7 SQL= ??? 8 print ${SQL} 9 do...

weixin_34232744的博客 1423

手把手教你用GD32F407VET6的EXMC驱动外部SRAM,搞定大内存需求

本文详细介绍了如何使用GD32F407VET6的EXMC外设驱动外部SRAM,解决嵌入式开发中的大内存需求问题。通过硬件连接方案、EXMC时序配置与初始化步骤,以及软件集成与内存管理技巧,帮助开发者快速实现内存扩展。特别适合需要处理图形显示缓冲、音频处理等大内存场景的GD32F407开发者。

weixin_30752699的博客 346

Bash中,将变量转换为字符串

需要注意的是,在将变量转换为字符串时,如果变量的值包含空格或其它特殊字符,最好使用引号进行包围,以免Bash将其解析为多个参数。将变量用单引号包围起来,Bash会将其解析为一个纯文本字符串,不会对其中的变量进行替换。使用printf格式化输出,将变量插入到格式字符串中,类似于C语言里的printf函数。将变量用双引号包围起来,Bash会将其解析为一个字符串,变量在字符串中被替换为其值。将变量标记为字符串,在变量名前加上一个反斜杠\,表示这是一个字符串而非变量。

人间不值得的博客 1131

高级数据库--作业及答案

中科大金培权老师的高级数据库课程作业及答案

一杯水果茶!足矣~ 1655

九天揽月带你玩转Ardupilot 的EKF2纸老虎(1)

目录 目录 摘要 1.kalman基础知识储备 摘要 本文主要记录自己学习ardupilot的ekf2代码的过程,相信很多人想移植或者学习ekf2,看到眼花缭乱的代码无从下手。九天揽月将带你玩转Ardupilot 的EKF2纸老虎 1.kalman基础知识储备 (1)先来看下最基础也是最重要的线性kalman 总结:不要害怕kalman,只要你可以懂得线性kal...

陌城烟雨 1万+

深入理解 Bash 中的 $‘...‘ 字符串语法糖

ANSI-C 字符串语法是 C 语言标准(特别是 C89/C90)中定义的一种字符串处理规范,主要用于支持转义字符(escape sequences)。它允许程序员在字符串字面量中嵌入非打印字符(如换行符)、控制字符(如响铃)以及其他特殊字符。这种机制通过反斜杠后接特定字符或数字序列来实现。这里的\n会被解析为换行符(ASCII 码 0x0A),输出两行文本。这种语法不仅提高了代码的可读性,还为程序员提供了表达复杂字符序列的能力。

vortex5的博客 1830

【电动汽车再生制动控制技术(万字长文,图文并茂)】

电动汽车再生制动的基本原理是:通过具有可逆作用的电动机/发电机来实现电动汽车动能和电能的转化。在汽车减速或制动时,可逆电机以发电机形式工作,汽车行驶的动能带动发电机将汽车动能转化为电能并储存在储能器(蓄电池或超级电容器)中;在汽车起动或加速时,可逆电机以电动机形式工作,将储存在储能器中的电能转化为机械能给汽车。这对于改善汽车的能量利用效率,延长电动汽车的行驶距离是至关重要的。

优快云-新能源汽车研发测试专业博主 1576

Java程序员的Bash实用指南系列之字符串处理(目录)

Java程序员的Bash实用指南系列之字符串处理(目录) 文章   在一般的计算机编程语言中,字符串处理是很重要的一块,Bash也是如此,如果掌握了字符串的处理,基本上就能够应付大部分的编程工作了。在Unix/Linux操作系统中,很多时候需要使用多个命令一起配合才能完成一个较复杂的任务,Shell提供了管道线、重定向、结构化编程等方式,把这些命令粘合在一起。因此,命令之间的接口数据的处理

Nicholas的专栏 QQ1295794532 1139

【产品】 产品设计:ID设计和MD设计详解

1、ID(Industry Design)工业设计 包含外观、材质、手感、颜色配搭,主要界面的实现与及色彩等方面的设计。 2、MD(Mechanical Design)结构设计 以手机为例: 前壳、后壳、手机的摄像镜头位置的选择、固定的方式、电池如何连接和手机的厚薄程度等。 如果是滑盖手机,如何让手机滑上去,怎样实现自动往上弹,SIM卡怎样插和拔的安排,这些都是手机结构设计的范畴。 繁...

产品线负责人 3万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java使用Bash获取Linux硬件序列号信息

Java执行Lininx命令;Java执行Bash命令;Java获取Linux硬件信息;Java获取Linux硬件序列号;

上官睿阳的博客 1204

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Ubuntu 18.04 Cron 实战:精准调度、环境隔离与生产级排错

Cron 是 Linux 系统最基础的定时任务调度机制,其核心原理基于时间字段匹配与守护进程轮询,技术价值在于轻量、稳定、低侵入和跨平台兼容。在运维自动化、日志清理、数据库备份、磁盘监控等典型场景中,Cron 以极小资源开销提供确定性执行保障。尤其在 Ubuntu 18.04 这类长期支持(LTS)系统中,Vixie Cron 与 systemd 共存机制成熟,crontab 语法标准,日志路径统一,成为承载关键基础设施任务的可靠底座。本文聚焦 Ubuntu 18.04 下 Cron 的真实运行时行为,深入

A458545418的博客 485

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

linux记忆栏

注意:数组下标与java相同,都是从0开始。序号方式示例1数组名=(值0 值1 值2 ...)2数组名=([0]=值 [1]=值 [2]=值 ...)3列表名="值0 值1 值2 ..."数组名=($列表名)4数组名[0]="值"数组名[1]="值"数组名[2]="值"......在bash中使用declare -A 集合名称 进行定义。

m0_60315945的博客 398

Terminalizer 终端行为剧本化:Ubuntu 18.04 兼容实践与可验证自动化

Terminalizer 是一种将终端操作转化为结构化 YAML 脚本的终端行为归档工具,区别于传统录屏,其核心在于捕获 stdin/stdout 流而非像素帧,实现命令级可编辑、可版本控制、可协作演进。它依托 Chromium 渲染引擎生成 GIF/HTML,天然支持跨平台回放与嵌入式交互,是 DevOps 文档、SOP 指南和 CLI 回归测试的理想载体。在 Ubuntu 18.04 这一广泛使用的 LTS 环境中,需解决 Node.js 版本兼容、中文字体渲染、glib ABI 冲突等典型问题,方能稳

cigang4063的博客 541

20155218 2006-2007-2 《Java程序设计》第2周学习总结

20155218 2006-2007-2 《Java程序设计》第2周学习总结 教材学习内容总结 java编程风格: java中没有指针的概念,尽管也有数组和对象的引用的概念,但他的管理全部交给系统管理,限制了用户的资源的访问,java让编程者无法找到指针来直接访问内存,并增添了自动的内存管理功能,从而防止指针的失误。 java中引入了package的概念,使面向对象和面向组建开发更为方...

115

Ubuntu 18.04 Cron实战:从环境隔离到表达式避坑的运维必修课

Cron 是 Linux 系统级定时任务的核心机制,其本质是操作系统与时间约定的执行契约。它基于守护进程(cron daemon)实现分钟级精度调度,不依赖上层框架,具备高确定性与低侵入性。在 Ubuntu 18.04 这一经典 LTS 版本中,Cron 采用传统 SysV 兼容模式运行,环境变量精简、日志集中于 /var/log/syslog、语法严格遵循 5 字段标准——这些特性使其成为理解自动化底层原理的理想标本。技术价值在于:规避 systemd timer 对时间跳变的敏感缺陷,通过 cronta

weixin_34150830的博客 373

【Java入门到精通】*基础篇

Java入门教程摘要(1-6期) 本系列从零讲解Java,基于Java 8 LTS版本。 Java历史与特性:1995年Sun公司发布,以跨平台、面向对象为核心优势,应用于后端、安卓、大数据等领域。 跨平台原理:通过JVM将字节码转换为机器码,实现"一次编写,到处运行"。 环境组件:JDK(开发工具包)⊃ JRE(运行环境)⊃ JVM(虚拟机),开发需安装JDK。 安装配置:提供Windows/Mac的JDK安装指南,强调路径无中文/空格。 环境变量:设置JAVA_HOME指向JDK路径,Path添加bin

2301_81248642的博客 930

个人开发知识点收集

个人开发知识点收集 1.java 比较字符串内容是否相等,需要使用方法 boolean java.lang.String.equals(Object arg0),直接使用 == 判断的是两个串的地址是否相等。 jvm加载jar是按照文件名排序后加载的,加载一次后不会重复加载。也就是说程序目录lib中同时存在 TestJar1....

weixin_33834075的博客 156

一些关于自己对于shell的理解,希望大家可以补充留言

是一个程序,采用C语言编写,它既是一种命令语言,又是一种解释性的编程语言。变量就是一个可以变得值变量的格式为:变量名=值shell中定义变量时,=的前后不能出现空格,否则会报错变量的举例var=1 age=18 整形变量name='zuojie' 字符串变量score=88.8 浮点型变量。

2301_80444366的博客 646
上一篇: POSIX.2正则表达式说明(确认一个正则表达式是否正确的唯一方法就是去测试它)...
下一篇: Bash字符串处理(与Java对照) - 19.查找字符的位置
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值