linux 关于AWK解析(四)

 

AWK格式化


 我们在深刻的了解一下AWK的格式化能力,在之前文章的举例中,我们在使用AWK时,通常使用print对文本金属输出,但是print只能实现简单的文本输出功能,并不能对文本格式进行改变,如果想要改变文本的格式,则需要awk中的另一个动作,它就是printf。

 

利用awk中的printf即可对文本进行格式化输出,printf动作用法与printf命令的用法非常相似,首先我们对比一下PRINT与PRINTF的区别如图:


 

printf动作与printf命令一样,都不会输出换行符,默认将文本输出在一行里面。

既然printf动作的用法与printf命令一样,那么,printf动作有没有printf命令中所谓的格式换行符呢?

肯定有啊,那么我们用“格式换行符”来指定一下$1的格式,如图:


 

这就是printf命令的用法,只是,printf动作与printf命令在语法上唯一的不同点就是,在使用printf动作时,指定的“格式”与列($1)之间需要“逗号”隔开,而使用printf命令时,指定的格式与传入的文本不需要使用“逗号”隔开,如图:


其实,他们还有一些其他的不同之处,我们在使用printf命令时,当指定的格式中只有一个“格式替换符”,但是传入了多个参数时,那么这多个参数可以重复的使用只一个格式替换符,如图


但是在awk中,我们则不能这样使用,在awk中,格式替换符的数量必须与传入的参数的数量相同,也就是数量与传入的参数一一对应,如图:


 

在AWK中使用printf动作时,需要注意:

  1. 使用printf动作输出的文本不会换行,如果需要换行,可以在对应的“格式替换符”后加“\n”进行转义。
  2. 使用printf动作时,“指定的格式”与“被格式化的文本”之间,需要用“逗号”隔开。
  3. 使用printf动作时,“格式”中的“格式替换符”必须与“被格式化文本”一一对应。

我们可以利用格式替换符对文本中的每一列进行格式化,如图


我们可以利用awk的内置变量FS,指定输入字段分隔符,然后再利用printf动作进行格式化,如图

其实,只要能灵活使用printf命令,再结合printf动作使用的注意点,即可快速灵活掌握它,关于awk的格式化能力,暂时总结到这里,希望对你有所帮助。

 

未完待续。

posted @ 2017-10-13 10:17  Clear-  阅读(191)  评论(0)    收藏  举报