zoukankan      html  css  js  c++  java
  • awk格式化

    利用awk中的printf动作,即可对文本进行格式化输出,printf动作的用法与print命令的用法非常相似,只是有略微的不同而已,不过,我们还是从最简单的示例开始看起,首先对比一下print动作与printf动作的区别,示例如下

    [root@server01 ~]# awk '{print $1}' test1
    abc
    8ua
    [root@server01 ~]# awk '{printf $1}' test1
    abc8ua[root@server01 ~]# 

    没错,printf动作与printf命令一样,都不会输出换行符,默认会将文本输出在一行里面。

    [root@server01 ~]# awk '{printf "%s
    ",$1}' test1
    abc
    8ua

    指定的"格式"与列($1)之间需要用"逗号"隔开,而使用printf命令时,指定的格式与传入的文本不需要使用"逗号"隔开

    [root@server01 ~]# printf "%s
    " teststring
    teststring
    [root@server01 ~]# printf "%s
    " 1 2 3 4 5 6 
    1
    2
    3
    4
    5
    6

    在awk中,我们则不能这样使用,在awk中,格式替换符的数量必须与传入的参数的数量相同,换句话说,格式替换符必须与需要格式化的参数一一对应

    [root@server01 ~]# awk 'BEGIN{printf "%s
    ",1,2,3,4,5}'
    1
    [root@server01 ~]# awk 'BEGIN{printf "%s
    %s
    %s
    %s
    %s
    ",1,2,3,4,5}'
    1
    2
    3
    4
    5
    我们来总结一下,在awk中使用printf动作时,需要注意以下3点。
    
    1)使用printf动作输出的文本不会换行,如果需要换行,可以在对应的"格式替换符"后加入"
    "进行转义。
    
    2)使用printf动作时,"指定的格式""被格式化的文本" 之间,需要用"逗号"隔开。
    
    3)使用printf动作时,"格式"中的"格式替换符"必须与 "被格式化的文本" 一一对应。
    [root@server01 ~]# awk '{printf "第一列:%s   第二列:%s
    ",$1,$2}' test1
    第一列:abc   第二列:123
    第一列:8ua   第二列:456
    [root@server01 ~]# awk '{printf "第一列:%s	第二列:%s
    ",$1,$2}' test1
    第一列:abc     第二列:123
    第一列:8ua     第二列:456

    [root@server01 ~]# awk -v FS=":" 'BEGIN{printf "%-10s %s ","用户名称","用户ID"} {printf "%-10s %s ",$1,$3}' /etc/passwd
    用户名称 用户ID
    root 0
    bin 1
    daemon 2
    adm 3
    lp 4
    sync 5
    shutdown 6
    halt 7
    mail 8
    operator 11
    games 12
    ftp 14
    nobody 99
    systemd-network 192
    dbus 81
    polkitd 999
    sshd 74
    postfix 89
    chrony 998
    ntp 38
    tss 59

  • 相关阅读:
    大数的加法
    tomcat jdbc DataSource资料
    转 spring的事务传播
    jmeter系列七(Visualizer的TestElement-ResultCollector)
    jmeter系列六(processor)
    jmeter系列五(Config配置元素)
    jmeter系列四(Visualizer)
    jmeter系列三(控制器controller)
    jmeter系列二(jmeter engine相关)
    jmeter系列一(jmeter界面相关无TestBean)
  • 原文地址:https://www.cnblogs.com/liujunjun/p/14190061.html
Copyright © 2011-2022 走看看