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 语句自定义函数的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP模板之变量输出、自定义函数与判断语句用法

用T-SQL语句自定义一表值函数

excel里负号怎么和其他的数字变成一行显示

在 SQL 自定义函数中运行 select 语句

用自定义函数替换 Print 语句调用

MySQL 自定义函数