在我按下CTRL+;之前,awk代码无法自动结束;D
我有一个简单的awk代码,如下所示:在我按下CTRL+;之前,awk代码无法自动结束;D,awk,Awk,我有一个简单的awk代码,如下所示: awk 'BEGIN {OFMT="%.0f"} {print 18.23}' awk 'BEGIN {OFMT="%.0f";print 18.23}' 但在我按下回车键后,什么也没有了。我再次按ENTER键,然后得到结果18,但它不会自动结束,直到我按CTRL+D 我将代码更改为如下所示: awk 'BEGIN {OFMT="%.0f"} {print 18.23}' awk 'BEGIN {OFMT="%.0f";print 18.23}' 那
awk 'BEGIN {OFMT="%.0f"} {print 18.23}'
awk 'BEGIN {OFMT="%.0f";print 18.23}'
但在我按下回车键后,什么也没有了。我再次按ENTER键,然后得到结果18,但它不会自动结束,直到我按CTRL+D
我将代码更改为如下所示:
awk 'BEGIN {OFMT="%.0f"} {print 18.23}'
awk 'BEGIN {OFMT="%.0f";print 18.23}'
那么它工作得很好
我不知道为什么会有这样的差异。我的理解是:{print 18.23}是一个动作,但是为什么在我移动到BEGIN部分后没有问题?
{print…}
在第一个中,awk
脚本被称为主输入循环。在此块中编写的执行处理的操作假定有一行输入可用。由于没有指定文件,它将等待用户输入。要在第一次迭代时终止它,您必须手动调用exit
。这就是为什么您可以在下面看到管道awk
按预期工作:
echo "" | awk 'BEGIN {OFMT="%.0f"} {print 18.23;}'
awk
中有三个主要块:
一次开始{}
- 在每个输入行上执行
{}
一次在处理结束时结束{}
{print…}
在第一个awk
脚本中被称为主输入循环。在此块中编写的执行处理的操作假定有一行输入可用。由于没有指定文件,它将等待用户输入。要在第一次迭代时终止它,您必须手动调用exit
。这就是为什么您可以在下面看到管道awk
按预期工作:
echo "" | awk 'BEGIN {OFMT="%.0f"} {print 18.23;}'
awk
中有三个主要块:
一次开始{}
- 在每个输入行上执行
{}
一次在处理结束时结束{}
您的操作将在每一行输入上执行。您的操作将在每一行输入上执行。谢谢,现在我明白了,在第一个awk脚本中打印将假定循环不止一次(等待手动输入),如果没有指定文件,谢谢,现在我明白了,在第一个awk脚本中打印将假定循环不止一次(等待手动输入),如果没有指定文件,