通过分割线来运行awk

时间:2012-07-17 20:18:20

标签: shell awk

这是awk中的一个基本问题。但我面临着这个问题,我不知道为什么。问题是当我在一行中运行awk命令时,例如

awk 'BEGIN {} {print $0;}' FILE 

然后代码正在运行

但是如果我在

之类的行之间拆分代码
 awk '
 BEGIN
 {
 }
 {
      print $0;
 }' FILE

它给出了一个错误,指出 BEGIN应该有一个动作部分。我想知道因为它是我格式化的相同代码,为什么我收到此错误。对我来说解决这个问题非常重要,因为我会在awk中编写大量的代码,因此我很难格式化并且每次都将它放在一行中。你能帮我解决这个问题。谢谢。注意。我在shell环境中运行这个awk

1 个答案:

答案 0 :(得分:5)

添加'{' right after the BEGIN`,您将收到错误消息。

{的开场线BEGIN需要位于sameBEGIN。所以改变你拥有的东西

awk '
 BEGIN
 {

awk '
 BEGIN {

并且您不会收到错误消息。

manual确实声明“BEGIN和END规则必须有操作;”,这可能是另一个问题。这个

awk 'BEGIN {} ...

对我来说似乎有些奇怪(如果没有发生任何事情,那么确实没有有理由)

@ Birei下面的有用评论解释了这两种语句“解析的方式在两种情况下都会有所不同。下一行中的开放'{'被解析为没有模式的动作(与BEGIN无关),而在同一行表示BEGIN规则的空行动。“