首页 awk printf语句(八)

awk printf语句(八)

技术张儿 2018-9-21 0 237
标签: Linux·awk

格式化输出,默认打印字符串不换行。

Format
描述
%.ns
输出字符串,n是输出几个字符
%ni
输出证书,n是输出几个数字
%m.nf
输出浮点数,m是输出整数位数,n是输出的小数位数
%x
不带正负号的十六进制,使用a至f表示10到15
%X
不带正负号的十六进制,使用A至F表示10到15
%%
输出单个%
%-5s
左对齐,对参数每个字段左对齐,宽度为5
%-4.2f
左对齐,宽度为4,保留两位小数
%5s
右对齐,不加横线表示右对齐


print和printf的区别:

print默认是换行。printf默认是不换行。

[root@localhost ~]# awk 'BEGIN{printf "a"}'
a[root@localhost ~]# 
[root@localhost ~]# awk 'BEGIN{print "a"}'
a
[root@localhost ~]# awk 'BEGIN{printf "a\n"}'
a




示例:
将换行符换成逗号(小括号重的5是最后一个数字)

[root@localhost ~]# seq 5|awk '{if($0!=5)printf "%s,",$0;else printf $0}'
1,2,3,4,5[root@localhost ~]#

输出一个字符

[root@localhost ~]# awk 'BEGIN{printf "%.1s\n","abc"}'
a

保留一个小数点

[root@localhost ~]# awk 'BEGIN{printf "%.2f\n",10/3}'
3.33
[root@localhost ~]# awk 'BEGIN{printf "%.1f\n",10/3}'
3.3

格式化输出

[root@localhost ~]# awk 'BEGIN{printf "user:%s\tpass:%d\n","abc",123}'
user:abc	pass:123

左对齐宽度 10:

[root@localhost ~]# awk 'BEGIN{printf "%-10s %-10s %-10s\n","ID","Name","Passwd"}'
ID         Name       Passwd 

右对齐宽度 10

[root@localhost ~]# awk 'BEGIN{printf "%10s %10s %10s\n","ID","Name","Passwd"}'
        ID       Name     Passwd

打印表格

[root@localhost ~]# cat test.awk 
BEGIN{
print "+--------------------+--------------------+";
printf "|%-20s|%-20s|\n","Name","Number";
print "+--------------------+--------------------+";
}
[root@localhost ~]# awk -f test.awk 
+--------------------+--------------------+
|Name                |Number              |
+--------------------+--------------------+

格式化输出

[root@localhost ~]# awk -F: 'BEGINP{printf "UserNmae\t\tShell\n--------------------\n"}{printf "%-20s %-20s\n",$1,$7}END{print "END...\n"}' /etc/passwd
root                 /bin/bash           
bin                  /sbin/nologin       
daemon               /sbin/nologin       
adm                  /sbin/nologin       
lp                   /sbin/nologin       
sync                 /bin/sync           
shutdown             /sbin/shutdown      
halt                 /sbin/halt          
mail                 /sbin/nologin       
operator             /sbin/nologin       
games                /sbin/nologin       
ftp                  /sbin/nologin       
nobody               /sbin/nologin       
avahi-autoipd        /sbin/nologin       
systemd-bus-proxy    /sbin/nologin       
systemd-network      /sbin/nologin       
dbus                 /sbin/nologin       
polkitd              /sbin/nologin       
tss                  /sbin/nologin       
postfix              /sbin/nologin       
sshd                 /sbin/nologin       
END...

打印十六进制

[root@localhost ~]# awk 'BEGIN{printf "%x %X",123,123}'
7b 7B

自定义函数(了解一下,很少用)
[root@localhost ~]# awk 'function myfunc(a,b){return a+b}BEGIN{print myfunc(1,2)}'
3


作者: 技术张儿 本文发布于2018-9-21 10:16:34
免责声明:本文仅代表作者个人观点。