Linux awk中的print和printf的比较

本文详细对比了awk脚本语言中print与printf函数的功能差异。print函数在输出多个结果时使用默认分隔符(通常是空格),而printf允许通过格式化字符串控制输出格式,包括数字精度、字符串宽度及换行等,适用于更复杂的数据展示需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

awk中print与printf的主要差别显示在以下两点:

  1. print在显示多个结果的时候以逗号分隔,结果将这几部分的内容自动使用分隔符进行分隔,且不需要添加换行符\n
  2. printf可以更加灵活的控制某一个字段的输出格式,通过使用诸如%-12s,%3.1f等格式化方法

现在我们通过几个例子来展示一下

通过seq 10 > test.sh来创建一个文件,首先看下文件的内容

$cat test.sh
1
2
3
4
5
6
7
8
9
10

然后我们做如下的内容

$ awk '{print "X"$1}' test.sh #可以将字符和变量直接相连接
X1
X2
X3
X4
X5
X6
X7
X8
X9
X10
$ awk '{print "X",$1}' test.sh #如果用,进行分隔,会用默认的分隔符进行分隔,这里是空格
X 1
X 2
X 3
X 4
X 5
X 6
X 7
X 8
X 9
X 10

接下来我们再看一下printf的一些例子

$awk '{printf"X"$1}' test.sh #将字符与变量连接到一起
X1X2X3X4X5X6X7X8X9X10
$awk '{printf"X",$1}' test.sh 
XXXXXXXXXX
$awk '{printf"X%s",$1}' test.sh #通过%s来进行格式化
X1X2X3X4X5X6X7X8X9X10
$awk '{printf"X%s\n",$1}' test.sh #通过换行符来显式换行
X1
X2
X3
X4
X5
X6
X7
X8
X9
X10

看起来printf更加难用一点,而print要更快捷,但是printf也有自己的一些优势,就是可以定制化输出,如下例子:

$awk '{per=$1/3;printf"X%3.3f\n",per}' test.sh #以三位数显示,小数后面保留三位小数
X0.333
X0.667
X1.000
X1.333
X1.667
X2.000
X2.333
X2.667
X3.000
X3.333
$awk '{per=$1/3;printf"X%e\n",per}' test.sh #以e记法来输出结果
X3.333333e-01
X6.666667e-01
X1.000000e+00
X1.333333e+00
X1.666667e+00
X2.000000e+00
X2.333333e+00
X2.666667e+00
X3.000000e+00
X3.333333e+00
$awk '{printf"X%10s\n",$1}' test.sh #以10个字符来格式化结果字符
X         1
X         2
X         3
X         4
X         5
X         6
X         7
X         8
X         9
X        10

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值