【发布时间】:2019-07-09 09:39:28
【问题描述】:
我今天开始学习 AWK,我编写了一个计算 2 次方的脚本。但是,当我启动它时,它会等待我按 Enter 键,当它打印完 2 的幂时,它不会打印“End”这个词,尽管它是在 End 部分中定义的。
这是我的代码:
BEGIN{
print "Power of two"
x=0
}
{
while(res<=1000){
res = 2^x
print 2 "^" x "=" res
x++
}
}
END{
print "End"
}
【问题讨论】:
-
因为我相信您没有将任何 Input_file 传递给
awk程序? -
我通过输入“gawk -f poweroftwo.awk”打开脚本
-
好的,我刚刚正确地看到了您的脚本,您并没有尝试对输入数据进行操作,而是想要一个独立的 awk 脚本。将整个代码放入
BEGIN或END或两者中,但你不能有介于两者之间的东西..这会告诉 awk 寻找输入数据..另外,我认为 gawk 版本 5+ 不允许这种使用 -
@Sundeep - 她应该把它放在 BEGIN,而不是 END(脚本只会挂起)。知道
I think gawk version 5+ will not allow this kind of use是什么意思,但如果是这样的话,gawk 将不允许只包含 BEGIN 的脚本 - 是的,它会。 -
@Sundeep 是的,
-e功能让您可以将最近更改的命令行 (-e) 和基于文件的 (-f) 脚本交错。现在我记得了——每个 sn-p 必须在语法上独立独立,所以你仍然可以写-e 'BEGIN{print "foo"}' -e 'END{print "bar"}',但你不能再写-e 'BEGIN{print "foo"' -e '} END{print "bar"}'。他们必须做出改变来实施namespaces。
标签: awk