2012-07-20 148 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