我可以使用 awk 执行一些数字或字符串操作,而不指定文件作为输入吗?

我可以使用 awk 执行一些数字或字符串操作,而不指定文件作为输入吗?

awk 具有对数字和字符串进行操作的内置函数。这正是编程语言的作用。

这让我想知道是否可以使用 awk 来执行一些数字或字符串操作,而不指定文件作为输入? awk 可以在没有文件或标准输入输入的情况下工作吗?

例如,我希望 awk 评估1+2,并在 awk 程序中对“输入”1 和 2 进行硬编码。好吧,我自己回答:

$ awk "BEGIN{print 1+2}"
3

但令我惊讶的是 awk 不等待来自 stdin 的输入,因为我没有指定输入文件。为什么不?

谢谢。

答案1

这是设计使然。它(至少)记录在 GNU 手册页中:awk

如果程序完全由BEGIN块组成,则执行终止,否则打开输入流并继续执行。

POSIX:

如果awk程序仅包含具有模式 的操作BEGIN,并且该BEGIN操作不包含getline任何函数,则当执行awk最后一个操作中的最后一条语句时,应退出而不读取其输入。BEGIN

相关内容