其中awk
有两个输出函数:print
和printf
。
- 他们的实现有
awk
很大不同吗? - 关于性能/速度有什么区别(如果可能的话——理论上,不仅仅是
time
命令行上的“”)? - 他们使用相同的系统调用吗?
print
函数在末尾输出一个换行符;printf
除非要求,否则不会。print
参数转换为字符串,然后将它们发送到由 OFS(输出字段分隔符)分隔的输出。printf
再使用双精度格式(%16.8g
或其他格式)和类似操作对其进行格式化。write(2)
用于两者或类似的东西,但将有代码(可能<stdio.h>
)在其之上分层。所有这些加起来就是:
print
比 . 更简单(因此更快)printf
。print
如果它可以满足您的需要,请使用;printf
当它做你需要的时候使用。而且使用asprintf
后跟print
可能会比printf
直接使用慢,所以不要。
如有疑问,请测量。