引言
- 本文主要介绍AWK中print语句的简单用法,以及print语句与printf语句用法上的区别,仅供参考。
print与printf
- 在AWK中,print和printf语句都用于向标准输出设备打印输出。它们的主要区别在于输出格式和语法。
- 输出格式
- print语句相对来说是AWK中最常用的输出语句,用于将文本和变量输出到标准输出设备。print语句不需要指定输出格式,它会自动换行并在输出文本末尾添加一个换行符:
- 而printf语句提供了更多的格式控制选项,允许用户自定义输出的格式
- 如下图所示,print输出的时候会自动换行,而printf并不会自动换行,且会将空格去掉
awk '{ print $1; print $2 }' a.txt
awk '{ printf $1; print $2 }' a.txt
# printf与print保持一致的输出
awk '{ printf "%s\n%s\n", $1, $2 }' a.txt

- 参数传递
- print语句将参数列表直接输出,而printf语句则需要使用格式控制字符串和对应的参数值。
- 注意print因为会自动加换行符,所以下图可以看到输出结果是四个,且$num是带入输出了两遍的。
awk '{ print "line1:", $1, "line2:", $2 }' a.txt
awk '{ printf "line1: %s, line2: %s\n", $1, $2 }' a.txt

- 简单来说,print一般适用于简单的输出需求,而printf因为要满足复杂的输出要求,所以提供了更多的格式控制选项那么必然使用起来就没有那么方便
补充print用法上的一些细节
- 1 在print语句中,输出的变量之间带不带逗号是有区别的,也就是说不加逗号输出结果是没有间隔的(前面文章提到过)

- 2 接1,可以使用OFS重新定义字段间的间隔符(用其他符号无效)

- 关于命令的重定向(|)
awk '{print | "sort -n"}' b.txt

awk -F'|' '{print $1 > "statement.txt";print $2 > "description.txt"}' test.txt

- printf命令也可以重定向到文件或者输出,只不过printf比print多了格式化字符串的功能,用法是类似的。