为什么 awk '{print "Hi, Judy"}' 在按 Return 时会重复打印 "Hi, Judy"?

为什么 awk '{print "Hi, Judy"}' 在按 Return 时会重复打印 "Hi, Judy"?

据我了解,通常awk遵循文件或输出。

然后它将在该文件或输出的每一行上执行其代码。

就我而言,我的命令awk '{print "Hi, Judy"}'后面没有任何文件或输出。

据我了解,它应该不打印任何内容或引发错误。

但为什么实际上,它会弹出一个交互式命令行,如果我继续按Enter,它会向我显示无限类似的内容:

Hi, Judy

Hi, Judy

Hi, Judy

为什么这个命令会这样工作?

#该分界线以下的内容应被忽略


附加问题:

我尝试了另一个命令:

awk ' BEGIN { print "Hi." }  { print "Buddy." } { print "Bye." } '

我期待它会Hi. Buddy. Bye.无限打印。

但我得到了:

Hi.

Buddy
Bye.

Buddy
Bye.

Buddy
Bye.

这又让我困惑了。为什么可以END clause无限地工作,而BEGIN clause在这里却只能工作一次?

答案1

它从标准输入(即你的键盘)读取数据。

试试这个看看我的意思

awk '{ print "Here is your line:", $0 }'

相关内容