awk-printf 语句自定义函数
Posted 喝茶等下班
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk-printf 语句自定义函数相关的知识,希望对你有一定的参考价值。
一、
printf语句
格式化输出,默认打印字符串不换行。
格式:printf [format] arguments
%s 一个字符串
%d,%i 下一个小数
%.ns 输出字符串,n是输出几个字符
%m.nf 输出浮点数,m是输出整数位数,n是输出的小数位数
%x 不带正负号的十六进制,使用a到f表示10到15
%X 不带正负号的十六进制,使用A到F表示10到15
%% 输出单个%
%-5s 左对齐,对参数每个字段左对齐,宽度为5
%-4.2f 左对齐,宽度为4,保留两位小数
%5s 右对齐,不加横线表示右对齐
1.
将换行符替换成逗号
[root@study ~]# seq 5|awk if($0!=5)printf "%s,",$0;else print $0
1,2,3,4,5
[root@study ~]# #输出一个字符:
[root@study ~]# awk BEGINprintf "%.1s\\n","abc"
a
[root@study ~]# #保留下一个小数点:
[root@study ~]# awk BEGINprintf "%.2f\\n",10/3
3.33
[root@study ~]# #格式化输出:
[root@study ~]# awk BEGINprintf "user:%s\\tpass:%d\\n","abc",123
user:abc pass:123
[root@study ~]# #左对齐宽度10:
[root@study ~]# awk BEGINprintf "%-10s %-10s %-10s\\n","ID","NAME","PASSWORD"
ID NAME PASSWORD
[root@study ~]# #右对齐宽度10
[root@study ~]# awk BEGINprintf "%10s %10s %10s\\n","ID","NAME","PASSWORD"
ID NAME PASSWORD
打印表格
[root@study ~]# cat test.awk
BEGIN
print "+--------------------+--------------------+";
printf "|%-20s|%-20s|\\n","Name","Number";
print "+--------------------+--------------------+";
[root@study ~]# awk -f test.awk
+--------------------+--------------------+
|Name |Number |
+--------------------+--------------------+
格式化输出:
[root@study ~]# awk -F: BEGINprintf "UserName\\t\\tShell\\n----------------------------------\\n"printf "%-20s %-20s\\n",$1,$7ENDprint "END...\\n" /etc/passwd
UserName Shell
----------------------------------
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
systemd-network /sbin/nologin
dbus /sbin/nologin
polkitd /sbin/nologin
tss /sbin/nologin
sshd /sbin/nologin
postfix /sbin/nologin
chrony /sbin/nologin
apache /sbin/nologin
END...
打印十六进制:
[root@study ~]# awk BEGINprintf "%x %X",123,123
7b 7B[root@study ~]#
自定义函数
格式:function name(parameter list) statements
[root@study ~]# awk function myfunc(a,b)return a+bBEGINprint myfunc(1,2)
3
没想到定义函数要在BEGIN之前定义
以上是关于awk-printf 语句自定义函数的主要内容,如果未能解决你的问题,请参考以下文章