`

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.csdn.net/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.查找字符的位置

 

3
1
分享到:
评论

相关推荐

    wget-1.14-15.el7.x86_64.rpm

    9. **用户代理伪装**:`--user-agent=字符串`可以改变发出请求的用户代理标识。 10. **证书验证**:对于HTTPS,可以使用`--ca-certificate`指定自定义CA证书,`--no-check-certificate`禁用证书检查。 `wget`的...

    Python库 | frida-14.2.18-py3.8-linux-i686.egg

    1. **安全审计**:在安全研究中,Frida常用于检测潜在的安全漏洞,例如检测缓冲区溢出、格式字符串漏洞等。 2. **自动化测试**:在软件测试中,Frida可以用来模拟用户输入,检查程序的响应和行为。 3. **逆向工程*...

    jdk-11.0.16.1_linux-x64_bin.tar.gz

    4. **文本块(Text Blocks,JEP 378)**:为Java源代码引入了多行字符串文字,使得处理多行字符串变得更加简单。 5. **强类型字符串连接(JEP 359)**:增强了字符串连接操作的性能,使得在连接字符串时无需创建...

    BASH 中的字符串处理

    字符串处理是BASH编程中的重要组成部分,它允许用户对文本数据进行操作,包括截取、替换、比较等。这篇博文将深入探讨BASH中的字符串处理技巧。 一、字符串定义与赋值 在BASH中,字符串可以被赋值给变量,常见的...

    Advanced Bash-Scripting Guide <>

    9.2. 操作字符串 9.3. 参数替换 9.4. 指定类型的变量:declare 或者typeset 9.5. 变量的间接引用 9.6. $RANDOM: 产生随机整数 9.7. 双圆括号结构 10. 循环和分支 10.1. 循环 10.2. 嵌套循环 10.3. 循环控制 10.4. ...

    Linux高级bash编程

    使用模式匹配来分析比较特殊的字符串 9-20. 对字符串的前缀或后缀使用匹配模式 9-21. 使用declare来指定变量的类型 9-22. 间接引用 9-23. 传递一个间接引用给awk 9-24. 产生随机数 9-25. 从一副扑克牌中取出一张...

    最新版linux jdk-11.0.15_linux-x64_bin.tar.gz

    3. **字符串切片**:提供一种高效访问字符串子序列的方法,而无需复制整个字符串。 4. **并行流收集器**:改进了并行流的性能,特别是在大型数据集上。 5. **模块化系统**(Jigsaw项目):进一步增强了Java的模块...

    PyPI 官网下载 | aws-cdk.aws-dynamodb-global-1.87.0.tar.gz

    这段代码创建了一个名为"MyGlobalTable"的DynamoDB全球表,具有一个字符串类型的主键"id",并将在美国东部(弗吉尼亚北部)和美国西部(俄勒冈)这两个区域进行复制。 总的来说,`aws-cdk.aws-dynamodb-global`是...

    redis-linux-3.0.0.tar.gz

    Redis是基于键值对的数据存储系统,支持多种数据结构,如字符串、哈希、列表、集合和有序集合。这些数据结构使得Redis在处理各种场景时表现出高效性,比如缓存、发布/订阅消息、计数器等。 在Linux环境中,`tar.gz`...

    Python库 | phonenumbers-8.12.20-py2.py3-none-any.whl

    1. **解析**:将非结构化的电话号码字符串转换为结构化的PhoneNumber对象,即使号码格式不正确也能尝试进行解析。 2. **格式化**:将PhoneNumber对象转换为用户友好的格式,如国际格式、国家格式、国家拨号格式等,...

    PyYAML-5.1.2.tar.gz

    - **解析YAML**:能够读取YAML格式的文件或字符串,将其转换为Python的数据结构,如字典、列表、字符串、数字等。 - **序列化Python对象**:可以将Python的数据结构转化为YAML字符串,方便存储或传输。 - **安全解析...

    jansson-2.10-1.el7.x86_64.rpm_jansson2.10_

    它能将JSON字符串转换为一个C数据结构,便于进一步处理。 2. **生成JSON**: 反之,它也能将C数据结构转换回JSON字符串,用于发送或存储。 3. **数据操作**: Jansson允许用户创建、修改和遍历JSON对象。这包括添加...

    PyPI 官网下载 | pydatacleaner-0.1.2.2-py3-none-any.whl

    2. **异常值检测与处理**:通过设定阈值、识别离群点或应用统计学方法,库能帮助识别并处理可能的异常值。 3. **重复值检测与去除**:pydatacleaner可以检测并移除数据集中的重复记录,以保持数据的唯一性。 4. **...

    Python库 | kkpyutil-0.68.0-py3-none-any.whl

    这些实用工具可能涵盖了字符串处理、数据结构操作、文件I/O、网络通信、日期时间处理、错误处理等多个方面。 例如,一个通用的实用工具库可能会有以下功能: 1. **数据类型转换**:提供便捷的方法将字符串、数字和...

    Python库 | ctparse-0.0.30-py2.py3-none-any.whl

    1. **自定义日期时间格式**:`ctparse`允许用户定义自己的日期和时间格式模板,可以处理包含中文字符、数字以及各种分隔符的日期字符串。 2. **智能解析**:库中的解析器能够自动识别并处理各种不规则的日期字符串...

    gettext-0.16.1.tar.gz

    `gettext-0.16.1.tar.gz` 是一个开源软件包,主要用于处理软件本地化(internationalization)和翻译(localization),它在IT行业中扮演着重要的角色,尤其是在多语言支持方面。`gettext` 工具集是GNU项目的一部分...

    PyPI 官网下载 | mercury_toolkit-0.9.72-py3-none-any.whl

    Python 3支持现代编程特性,如Unicode字符串处理和yield from语句,同时移除了Python 2中的许多过时元素。`mercury_toolkit`是一个为Python 3设计的库,因此确保了与最新Python环境的兼容性。 **后端开发** 在软件...

    PyPI 官网下载 | KGlobal-1.6.7.0-py3-none-any.whl

    在Python中,这类库通常包含各种语言的字符串资源,以及用于转换和适应不同地区习惯的函数。 要安装这个库,可以使用`pip`命令,直接在终端输入: ```bash pip install KGlobal-1.6.7.0-py3-none-any.whl ``` ...

    PyPI 官网下载 | structlog-21.1.0-py2.py3-none-any.whl

    1. **结构化数据**:它允许你定义日志事件的结构,如时间戳、模块、函数名、级别等,所有这些信息都会被封装在字典或其他可迭代对象中,而非简单的字符串。 2. **处理链**:`structlog`支持日志处理器链,允许...

    Python库 | construct_hub-0.1.136-py3-none-any.whl

    总的来说,`construct_hub`是Python中处理结构化数据的强大工具,尤其适合处理复杂的数据格式。通过理解和掌握其用法,开发者能够更高效地处理二进制数据,提升代码的可读性和维护性。对于那些需要处理大量二进制...

Global site tag (gtag.js) - Google Analytics