我正在使用 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}'