我正在阅读一本名为" AWK编程语言的电子书"我目前正在讨论第1.3章,并观察了print
和printf
的工作原理。
我们假设我打算以emp.data
的形式打印"total pay of [name] [total pay]"
的内容。
emp.data
中的数据是:
Beth 4.00 0
Dan 3.75 0
Kathy 4.00 10
Mark 5.00 20
Mary 5.50 22
Susie 4.25 18
当我在终端中使用print
时,我只需输入:
$ awk '{ print "total pay of", $s1, $s2 * $s3 }' emp.data
但是当我在终端中使用printf
时,我还需要像这样指定\n
:
$ awk '{ printf("total pay for %s $%.2f\n", $1, $2 * $3) }' emp.data
他们会输出相同的结果,但为什么我需要在字符串的末尾指定\n
以在printf
中打印换行符,而不是print
?
答案 0 :(得分:3)
来自GNU AWK用户指南:
printf语句不会自动在其输出中附加换行符。它仅输出格式字符串指定的内容。因此,如果需要换行符,则必须在格式字符串中包含一个换行符。输出分隔符变量OFS和ORS对printf语句没有影响。
参考:https://www.gnu.org/software/gawk/manual/html_node/Basic-Printf.html#Basic-Printf
答案 1 :(得分:0)
这些预定义的方法是针对不同的puprposes设计的。
因此,可能会有一个scneario,您不希望在每个输出后使用换行符,您可以使用printf
,然后使用print
。
就这么简单。