2012-07-20 99 views
6

我想知道如何在awk中使用多行注释。截至目前,我一直在使用#来评论一行。有人可以指导我这一点。谢谢。awk中的多行注释

+6

在awk中没有多行注释 – NARKOZ 2012-07-20 08:02:56

+0

然后,有关如何使代码优雅 – NandaKumar 2012-07-20 08:03:48

+0

@NandaKumar“使代码优雅”的任何建议都有些宽泛。我的建议是查看书籍/参考资料中的一些较大的AWK程序,并使用它们来指导您。我有这个http://www.amazon.com/The-AWK-Programming-Language-Alfred/dp/020107981X,可能会得到这个http://www.amazon.com/sed-awk-Edition-Dale-多尔蒂/ DP/1565922255。这也看起来很有希望:http://www.amazon.com/Effective-awk-Programming-3rd-Edition/dp/0596000707。我从学习其他代码(而不仅仅是使用AWK)中学到了很多东西。事实上,我每天都会这样做:) – Levon 2012-07-20 08:27:04

回答

10

AWK中没有多行注释,但如果需要可以伪造它。这是一个技术,至少在GNU AWK(gawk)工作原理:

#!/usr/bin/awk -f 
0 { 
    You can use 
    0 to cause 
    a block to 
    not execute 
    or be parsed 
} 

{ 
    print $2, $1, $3 
    if (0) { 
     You can use if (0) 
     in a similar manner 
     inside a block 
    } 
    sum += $4 
} 

0 && /pattern/ { # prepend "0 &&" to other conditions to turn off a block 
    print 
} 

很高兴能够有调试过程中注释掉的代码段多行注释。我不一定会将这种技术用于文档,因为可能无法保证非语法文本不会因语法错误而被解析。

它似乎也在mawk工作。

+2

这很好理解,但如果“评论”包含诸如“不”这样的内容,它就不起作用。换句话说,“评论”不是语法分析的,但它必须是词法正确的awk标记流。 – lhf 2012-07-20 11:41:38

+0

@lhf:没错,它有其局限性。这是我警告不要将它用于文档的原因之一(尽管我没有说明)。 – 2012-07-20 11:45:57