其他分享
首页 > 其他分享> > awk格式化

awk格式化

作者:互联网

awk格式化

前面我们接触到的awk的输出功能,是{print}的功能,只能对文本简单的输出,并不能美化或者修改格式

printf格式化输出

如果你学过C语言或是go语言,一定见识过printf()函数,能够对文本格式化输出

printf和print的区别

format的使用

要点:
1、其与print命令的最大不同是,printf需要指定format;
2、format用于指定后面的每个item的输出格式;
3、printf语句不会自动打印换行符;\\n

format格式的指示符都以%开头,后跟一个字符;如下:
%c: 显示字符的ASCII码;
%d, %i:十进制整数;
%e, %E:科学计数法显示数值;
%f: 显示浮点数;
%g, %G: 以科学计数法的格式或浮点数的格式显示数值;
%s: 显示字符串;
%u: 无符号整数;
%%: 显示%自身;

printf修饰符:
-: 左对齐;默认右对齐,
+:显示数值符号;  printf "%+d"
[root@pylinux tmp]# awk '{print $1}' 超哥nb.txt
超哥nb1
超哥nb4
超哥nb7
超哥nb10

[root@pylinux tmp]# awk '{print $1}' 超哥nb.txt
超哥nb1
超哥nb4
超哥nb7
超哥nb10
[root@pylinux tmp]#
[root@pylinux tmp]# awk '{printf $1}' 超哥nb.txt
超哥nb1超哥nb4超哥nb7超哥nb10[root@pylinux tmp]#

给printf添加格式

[root@pylinux tmp]# awk '{printf "%s\n",$1}' 超哥nb.txt
超哥nb1
超哥nb4
超哥nb7
超哥nb10

image-20191108143936780

对多个变量进行格式化

当我们使用linux命令printf时,是这样的,一个%s格式替换符,可以对多个参数进行重复格式化

[root@pylinux tmp]# printf  "%s\n"  a b c d
a
b
c
d

然而awk的格式替换符想要修改多个变量,必须传入多个

[root@pylinux tmp]# awk 'BEGIN{printf "%d\n%d\n%d\n%d\n%d\n",1,2,3,4,5}'
1
2
3
4
5

image-20191108145710898

printf案例

[root@pylinux tmp]# cat  超哥nb.txt
超哥nb1 超哥nb2 超哥nb3
超哥nb4 超哥nb5 超哥nb6
超哥nb7 超哥nb8 超哥nb9
超哥nb10

[root@pylinux tmp]# awk '{printf "第一列:%s  第二列:%s  第三列:%s\n",$1,$2,$3}' 超哥nb.txt
第一列:超哥nb1  第二列:超哥nb2  第三列:超哥nb3
第一列:超哥nb4  第二列:超哥nb5  第三列:超哥nb6
第一列:超哥nb7  第二列:超哥nb8  第三列:超哥nb9
第一列:超哥nb10  第二列:  第三列:

image-20191108151025887

对pwd.txt文件格式化

image-20191108154352814

awk -F ":" 'BEGIN{printf "%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\n","用户名","密码","UID","GID","用户注释","用户家目录","用户使用的解释器"} {printf "%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %s\n",$1,$2,$3,$4,$5,$6,$7}' pwd.txt

参数解释
'BEGIN{printf "格式替换符 格式替换符2","变量1","变量2"}'  执行BEGIN模式

%s是格式替换符 ,替换字符串
%s\t 格式化字符串后,添加制表符,四个空格
%-25s  已然是格式化字符串, - 代表左对齐  ,25个字符长度

标签:%-,格式化,超哥,awk,printf,25s
来源: https://www.cnblogs.com/xiaohaoge/p/16444935.html