• shell中awk printf的用法


    shell中awk printf的用法

     

    打印输出时,可能需要指定字段间的空格数,从而把列排整齐。在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出。

    printf函数返回一个带格式的字符串给标准输出,如同C语言中的printf语句一样。printf语句包括一个加引号的控制串,控制串中可能嵌有若干格式说明和修饰符。控制串后面跟一个逗号,之后是一列由逗号分隔的表达式。printf函数根据控制串中的说明编排这些表达式的格式。与print函数不同的是, printf不会在行尾自动换行。因此,如果要换行,就必须在控制串中提供转义字符 。

    每一个百分号和格式说明都必须有一个对应的变量。要打印百分号就必须在控制串中给出两个百分号。请参考print转义字符和printf修饰符。格式说明由百分号引出,另外还列出了printf所用的格式说明符。

    printf使用的转义字符

    转义字符定义
    c 字符
    s 字符串
    d 十进制整数
    ld 十进制长整数
    u 十进制无符号整数
    lu 十进制无符号长整数
    x 十六进制整数
    lx 十六进制长整数
    o 八进制整数
    lo 八进制长整数
    e 用科学记数法(e 记数法)表示的浮点数
    f 浮点数
    g 选用e或f中较短的一种形式

    printf的修饰符

    字符定义
    - 左对齐修饰符
    # 显示8 进制整数时在前面加个0
    显示16 进制整数时在前面加0x
    + 显示使用d 、e 、f 和g 转换的整数时,加上正负号+或-
    0 用0而不是空白符来填充所显示的值

    printf的格式说明符

    格式说明符功能
    %c 打印单个ASCII 字符
    printf("The character is %c ",x)
    输出: The character is A
    %d 打印一个十进制数
    printf("The boy is %d years old ",y)
    输出:The boy is 15 years old
    %e 打印数字的e 记数法形式
    printf("z is %e ",z) 打印: z is 2.3e+0 1
    %f 打印一个浮点数
    printf("z is %f ", 2.3 * 2)
    输出: z is 4.600000
    %o 打印数字的八进制
    printf("y is %o ",y)
    输出:z is 17
    %s 打印一个字符串
    print("The name of the culprit is %s ",$1)
    输出:The name of the culprit is Bob Smith
    %x 打印数字的十六进制值
    printf("y is %x ",y)
    输出:x is f

    打印变量时,输出所在的位置称为"域"(field),域的宽度(width)是指该域中所包含的字符个数。下面这些例子中, printf控制串里的管道符(竖杠)是文本的一部分, 用于指示格式的起始与结束。
    范例

    echo "Linux" | awk '{printf "|%-15s| ",$1}'
    |Linux          |

    说明:对于echo命令的输出,Linux是经管道发给awk。printf函数包含一个控制串。百分号让printf做好准备,它要打印一个占15个格、向左对齐的字符串,这个字符串夹在两个竖杠之间,并且以换行符结尾。百分号后的短划线表示左对齐。控制串后面跟了一个逗号和$1。printf将根据控制串中的格式说明来格式化字符串Linux。

    范例

    echo "Linux" | awk '{printf "|%15s| ",$1}'
    |          Linux|

    说明:字符串Linux被打印成一个占15 格、向右对齐的字符串,夹在两个竖杠之间,以
    换行符结尾。

    范例

    cat employees
    Tom   Jones 4424 5/12/66 543354
    Mary  Adams 5346 11/4/63 28765
    Sally Chang 1654 7/22/54 650000
    Billy Black 1683 9/23/44 336500
    $ awk '{printf "The name is: %-15s ID is %8d ",$1,$3}' employees
    The name is Tom             ID is 4424
    The name is Mary            ID is 5346
    The name is Sally           ID is 1654
    The name is Billy           ID is 1683

    说明:要打印的字符串放置在两个双引号之间。第一个格式说明符是%-15s,它对应的参数是$1,紧挨着控制串的右半边引号后面的那个逗号。百分号引出格式说明:短划线表示左对齐,15s表示占15格的字符串。这条命令用来打印一个左对齐、占15格的字符串,后面跟着字符串的ID和一个整数。

    格式:%8d表示在字符串的这个位置打印$2 的十进制(整数)值。这个整数占8格,向右对齐。您也可以选择将加引号的字符串和表达式放在圆括号里。

  • 相关阅读:
    Java测试开发--Set、Map、List三种集合(四)
    Java测试开发--Maven用法(三)
    Java测试开发--Java基础知识(二)
    干净的卸载数据库
    腾讯云服务器部署springboot项目
    MultipartFile 实现图片上传
    URI和URL
    Redis debug模式报org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with...错误
    空指针异常
    Java 程序中怎么保证多线程的运行安全?
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/14888048.html
Copyright © 2020-2023  润新知