0
以下程序打印出文件的名称,行数以及以超过五分之一行开始的情况下以//
开头的行数。如何写在惯用的awk?
awk '$1 == "//" { a+=1 } END { if (a * 5 >= NR) {print FILENAME " " NR " " a}}' MyClass.java
这工作,但嵌套{{}}
让我怀疑,如果我这样做是正确的,知道的awk程序的典型结构为:
awk 'condition { actions }'
所以我怀疑,像
awk '$1 == "//" { a+=1 } END && (a * 5 >= NR) {print FILENAME " " NR " " a}' MyClass.java
会更合适,但每次这样的尝试给了语法错误。有没有正确的方法来做到这一点,或者我的方法是否合适。
它的工作原理和它的可读性。你还能想要什么? – Ferruccio
我想我可能想要的'更多'是它将以awk所期望的方式编写。也许是,我不知道。 –
我不明白为什么嵌套块将是unidiomatic - 恰恰相反。如果内部块妨碍了你,只要该块包含单个语句,它就是可选的,但保留块分隔符实际上是一种很好的形式。 – tripleee