这是awk中的一个基本问题。但我面临着这个问题,我不知道为什么。问题是当我在一行中运行awk命令时,例如
awk 'BEGIN {} {print $0;}' FILE
然后代码正在运行
但是如果我在
之类的行之间拆分代码 awk '
BEGIN
{
}
{
print $0;
}' FILE
它给出了一个错误,指出 BEGIN应该有一个动作部分。我想知道因为它是我格式化的相同代码,为什么我收到此错误。对我来说解决这个问题非常重要,因为我会在awk中编写大量的代码,因此我很难格式化并且每次都将它放在一行中。你能帮我解决这个问题。谢谢。注意。我在shell环境中运行这个awk
答案 0 :(得分:5)
添加'{' right after the
BEGIN`,您将不收到错误消息。
{
的开场线BEGIN
需要位于same
行BEGIN
。所以改变你拥有的东西
awk '
BEGIN
{
到
awk '
BEGIN {
并且您不会收到错误消息。
manual确实声明“BEGIN和END规则必须有操作;”,这可能是另一个问题。这个
awk 'BEGIN {} ...
对我来说似乎有些奇怪(如果没有发生任何事情,那么确实没有有理由)
@ Birei下面的有用评论解释了这两种语句“解析的方式在两种情况下都会有所不同。下一行中的开放'{'
被解析为没有模式的动作(与BEGIN无关),而在同一行表示BEGIN规则的空行动。“