在Bash中,如何计算项目中非空行代码的数量?
cat foo.c | sed '/^\s*$/d' | wc -l
如果您考虑注释空白行:
cat foo.pl | sed '/^\s*#/d;/^\s*$/d' | wc -l
虽然,这是语言依赖.
#!/bin/bash find . -path './pma' -prune -o -path './blog' -prune -o -path './punbb' -prune -o -path './js/3rdparty' -prune -o -print | egrep '\.php|\.as|\.sql|\.css|\.js' | grep -v '\.svn' | xargs cat | sed '/^\s*$/d' | wc -l
上面将为您提供项目(当前文件夹和所有子文件夹递归)的代码行(删除空行)的总计数.
在上面的"./blog""./ punbb""./ js/3rdparty"和"./pma"是我黑名单的文件夹,因为我没有在其中编写代码.此外,.php,.as,.sql,.css,.js是正在查看的文件的扩展名.将忽略具有不同扩展名的任何文件.
如果您想使用shell脚本以外的其他内容,请尝试 CLOC:
cloc在许多编程语言中计算空白行,注释行和源代码的物理行.它完全用Perl编写,在Perl v5.6及更高版本的标准发行版之外没有依赖项(某些外部模块的代码嵌入在cloc中),因此非常便携.
使用常见的shell实用程序有很多方法可以做到这一点.
我的解决方案是:
grep -cve '^\s*$'
这将在
此方法相对于涉及管道的方法的一个优点wc
是,您可以指定多个文件并为每个文件获取单独的计数:
$ grep -cve '^\s*$' *.hh config.hh:36 exceptions.hh:48 layer.hh:52 main.hh:39
'wc'计算行,单词,字符,所以计算所有行(包括空行)使用:
wc *.py
要过滤掉空行,可以使用grep:
grep -v '^\s*$' *.py | wc
'-v'告诉grep输出所有行,除了那些匹配'^'的行是'\ s'的开头''是零或者更多的空白字符'$'是行的结尾*.py是我的例子你想要计算的所有文件(当前目录中的所有python文件)管道输出到wc.就行了.
我正在回答我自己的(真实的)问题.找不到覆盖此内容的stackoverflow条目.
此命令计算项目中非空行的数量.cat fileName | grep -v ^$ | wc -l
grep -v ^ $正则表达式函数是忽略空行.
cat 'filename' | grep '[^ ]' | wc -l
应该可以解决问题