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"
- printf动作默认不会添加换行符
- print默认添加空格换行符
[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添加格式
- 格式化字符串 %s 代表字符串的意思
[root@pylinux tmp]# awk '{printf "%s\n",$1}' 超哥nb.txt
超哥nb1
超哥nb4
超哥nb7
超哥nb10
对多个变量进行格式化
当我们使用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
- printf对输出的文本不会换行,必须添加对应的
格式替换符
和\n
- 使用printf动作,
'{printf "%s\n",$1}'
,替换的格式和变量之间得有逗号,
- 使用printf动作,
%s %d 等格式化替换符
必须 和被格式化的数据
一一对应
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 第二列: 第三列:
- awk通过空格切割文档
- printf动作对数据格式化
对pwd.txt文件格式化
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