awk学习手记4-print、printf

4 篇文章 0 订阅

awk学习手记4-print、printf

前面学习的一些内容让我们认识到awk一些基础的的文本匹配及操作能力。现在我们开始更加深入的学习其最强大的功能-格式化。

在之前的实例中,我们通常使用print来输出文本,但是print只能够实现简单的文本的输出功能,并不能对文本格式进行改变。如果想要改变文本格式,则需要使用printf动作。

printf动作和C语言中的printf函数很相似,只是有略微的不同,下面我们开始在具体的示例中学习printf动作。
作为孪生兄弟,我们首先看一下awk的print动作和printf动作的区别:

[root@my127 awk]# awk '{print $1}' 4.txt 
root
123
WWW
[root@my127 awk]# awk '{printf $1}' 4.txt 
root123WWW[root@my127 awk]# 

printf动作和C语言中的printf命令一样,都不会输出换行符,默认会在文本输出在同一行。和C中printf命令一样,awk的printf动作也有“格式替代符”
[root@my127 awk]# awk ‘{printf “%s\n” ,$1}’ 4.txt
root
123
WWW
**注意:awk中printf指定的“格式”和文本之间需要用逗号,隔开!**实际上我们建议awk语句program中所有的‘分子’都相互隔开。

printf动作和printf命令第二个不同点是:printf命令可以只用一个格式替代符,也就是说当语句中传入了多个参数,那么这多个参数可以重复使用同一个替代符,示例:

[root@my127 awk]# printf "%s\n" 1 2 3 4 5
1
2
3
4
5

但是在awk中,我们的格式替代符数量必须等于传参数量,换句话说,格式替代符必须与参数一一对应,示例如下:

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

总结一下printf动作使用须知:

1、使用printf动作不会换行,如果需要换行可以在对应的“格式替代符”后面加入“\n”进行转义换行。

2、使用printf动作时,需要将“格式”与“被格式化的文本”用逗号隔开。

3、使用printf动作时,“格式”中的格式替代符必须与被格式化的文本一一对应。

格式化举例

例一、

利用printf对文本的每一列进行格式化

[root@my127 awk]# cat 7.txt 
root test prom tmp
123  456  78900  00
[root@my127 awk]# awk '{printf "第一列:%s 第二列:%s\n",$1,$2}' 7.txt 
第一列:root 第二列:test
第一列:123 第二列:456

例二、

与FS结合使用,先来指定分隔符,在进行格式化。
FS负责切割,printf负责格式化:

[root@my127 awk]# cat 6.txt 
qwe#rty#yui#iop
asd#fgh#jkl#zxc
mnb#plm#ijn#awr
[root@my127 awk]# awk -v FS='#' '{printf "第一列:%s 第二列:%s\n",$1,$2}' 6.txt 
第一列:qwe 第二列:rty
第一列:asd 第二列:fgh
第一列:mnb 第二列:plm

例三、

利用awk的begin模式,结合printf动作,输出一个表格样式的文本。

[root@my127 awk]# awk -v FS='#' 'BEGIN{printf "%-10s\t %s\n","用户名称","用户ID"}{printf "%-10s\t %s\n",$1,$2}' 6.txt 
用户名称      	 用户ID
qwe       	     rty
asd       	     fgh
mnb       	     plm

生产环境下,printf动作使用频率超高,需要多用多练习,才能灵活使用printf动作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值