awk 简单的 printf 语法

awk 简单的 printf 语法

我正在使用 awk 命令练习 printf 函数。

echo "unix" | awk '{printf "%5s\n", "hi"}'
awk '{printf "%20s\n", "hi"}'

第一个带 echo 的命令打印“hi”。但是,第二个命令出现了问题。它的输出不断继续。我该如何修复这个问题,让它完全按照第一个命令执行。

答案1

awk循环输入的每个记录。如果未指定输入文件,则使用标准输入。如果您想在不使用任何输入的情况下运行表达式,请使用块BEGIN,并且不将任何内容保留在块之外:

$ awk 'BEGIN {print "foo"}'
foo

因此,就你的情况而言:

awk 'BEGIN {printf "%20s\n", "hi"}'

通常,BEGIN块在读取任何输入之前运行。因此,无论是否有任何输入,它都会运行,并且由于没有其他表达式要运行,因此awk只需退出即可。

您还可以使用exit让 awk 退出循环:

awk '{printf "%20s\n", "hi"; exit}'

相关内容