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
Antwort
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.
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
@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). –
gibt es keinen mehrzeiligen Kommentar in awk – NARKOZ
Dann irgendwelche Vorschläge, wie man den Code elegant machen – NandaKumar
@ 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