2012-07-20 19 views
6

Ich würde gerne wissen, wie man mehrzeilige Kommentar in awk verwenden. Ab sofort verwende ich # um eine einzelne Zeile zu kommentieren. Könnte mich jemand diesbezüglich leiten? Vielen Dank.Mehrzeiliger Kommentar in awk

+6

gibt es keinen mehrzeiligen Kommentar in awk – NARKOZ

+0

Dann irgendwelche Vorschläge, wie man den Code elegant machen – NandaKumar

+0

@ NandaKumar "Code elegant machen" ist etwas breit. Mein Vorschlag wäre, einige größere AWK-Programme in Büchern/Referenzen zu betrachten und diese zu benutzen, um Sie zu führen. Ich habe diese http://www.amazon.com/The-AWK-Programming-Language-Alfred/dp/020107981X, und könnte diese http://www.amazon.com/sed-awk-Edition-Dale- Dougherty/dp/1565922255. Dieser sieht auch vielversprechend aus: http://www.amazon.com/Effective-awk-Programming-3rd-Edition/dp/0596000707. Ich habe viel gelernt, indem ich den Code von anderen gelernt habe (nicht nur mit AWK). Und tatsächlich mache ich es jeden Tag hier auf SO :) – Levon

Antwort

10

In AWK gibt es keinen mehrzeiligen Kommentar, aber Sie können ihn fälschen, wenn Sie möchten. Hier ist eine Technik, die zumindest in GNU AWK (gawk) arbeitet: während des Debuggens

#!/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 
} 

Es ist schön zu können, haben mehrzeilige Kommentare zur Kommentierung aus Codeabschnitte. Ich würde diese Technik nicht notwendigerweise für die Dokumentation verwenden, da nicht garantiert werden kann, dass der Nicht-Code-Text nicht nach Syntaxfehlern analysiert wird.

Es scheint auch in mawk zu arbeiten.

+2

Das ist schön zu wissen, aber es funktioniert nicht, wenn der "Kommentar" Dinge wie 'nicht 'enthält. Mit anderen Worten, der "Kommentar" wird nicht für die Grammatik analysiert, sondern muss ein lexikalisch korrekter awk-Token-Stream sein. – lhf

+0

@lhf: Es stimmt, es hat seine Grenzen. Das war einer der Gründe, warum ich davor gewarnt habe, es für die Dokumentation zu verwenden (obwohl ich es nicht angegeben habe). –