awk格式化输出

awk格式化

接触awk的输出功能,是(print)的功能,只能对文本简单的输出,并不能 美化 或者修改模式

printf格式化输出

C语言或者go语言,print()函数,能够对文本格式化输出

printf和print的区别

format的的使用

要点:
1.其与print命令的最大不能是,print需要指定的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@xuexi3 home]# awk '{printf "%s",$0}' cssed.txt 
s1 s2 s3 s4 s5 s6s7 s8 s9 s10 s11s12 s13 s14 s15 s16 s17s18 s19 s20 s21 s22 s23 s25 s26 s27 s28 s29 s30 s31 s32s33 s34 s35 s36 s37 s38 s39s40 s41 s42 s43 s44 s45 s46 s47s48 s49 s50[root@xuexi3 home]# awk '{printf $0}' css^C
[root@xuexi3 home]# ^C
[root@xuexi3 home]# ^C
[root@xuexi3 home]# awk '{printf "%s\n",$0}' cssed.txt 
s1 s2 s3 s4 s5 s6
s7 s8 s9 s10 s11
s12 s13 s14 s15 s16 s17
s18 s19 s20 s21 s22 s23 s25 s26 s27 
s28 s29 s30 s31 s32
s33 s34 s35 s36 s37 s38 s39
s40 s41 s42 s43 s44 s45 s46 s47
s48 s49 s50

对多个变量进行格式化

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

[root@xuexi3 home]# printf "%s\n"  a b c d
a
b
c
d

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

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

对pwd.txt文件格式化

[root@xuexi3 /]# awk -F ":"   'BEGIN{printf "%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\n","用户名","密码","UID","DID","用户注释","用 户家目录","用户使用的解释器"}{printf "%-25s\t %-25s\t %-25s\t %25s\t %-25s\t %-25s\t %s\n",$1,$2,$3,$4,$5,$6,$7}' pwd.txt 
用户名                      	 密码                       	 UID                      	 DID                      	 用户注释                     	 用户家目录                    	 用户使用的解释器                 
root                     	 x                        	 0                        	                         0	 root                     	 /root                    	 /bin/bash
bin                      	 x                        	 1                        	                         1	 bin                      	 /bin                     	 /sbin/nologin
daemon                   	 x                        	 2                        	                         2	 daemon                   	 /sbin                    	 /sbin/nologin
adm                      	 x                        	 3                        	                         4	 adm                      	 /var/adm                 	 /sbin/nologin
lp                       	 x                        	 4                        	                         7	 lp                       	 /var/spool/lpd           	 /sbin/nologin
sync                     	 x                        	 5                        	                         0	 sync                     	 /sbin                    	 /bin/sync
shutdown                 	 x                        	 6                        	                         0	 shutdown   
awk -F ":"   'BEGIN{printf "%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\n","用户名","密码","UID","DID","用户注释","用 户家目录","用户使用的解释器"}{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个字符长度
posted @ 2022-08-30 17:01  一直前进  阅读(1718)  评论(0编辑  收藏  举报