ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

awk格式化

2022-07-05 00:36:16  阅读:124  来源: 互联网

标签:%- 格式化 超哥 awk printf 25s


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

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对输出的文本不会换行,必须添加对应的格式替换符\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  第二列:  第三列:

image-20191108151025887

  • awk通过空格切割文档
  • printf动作对数据格式化

对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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有