Mic*_*mer 182
cat foo.c | sed '/^\s*$/d' | wc -l
Run Code Online (Sandbox Code Playgroud)
如果您考虑注释空白行:
cat foo.pl | sed '/^\s*#/d;/^\s*$/d' | wc -l
Run Code Online (Sandbox Code Playgroud)
虽然,这是语言依赖.
Gil*_*les 51
#!/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
Run Code Online (Sandbox Code Playgroud)
上面将为您提供项目(当前文件夹和所有子文件夹递归)的代码行(删除空行)的总计数.
在上面的"./blog""./ punbb""./ js/3rdparty"和"./pma"是我黑名单的文件夹,因为我没有在其中编写代码.此外,.php,.as,.sql,.css,.js是正在查看的文件的扩展名.将忽略具有不同扩展名的任何文件.
Spo*_*ser 27
使用常见的shell实用程序有很多方法可以做到这一点.
我的解决方案是:
grep -cve '^\s*$' <file>
Run Code Online (Sandbox Code Playgroud)
这将在<file>中搜索与模式(-e)'^\s*$'匹配的不匹配(-v)行,这是一行的开头,后跟0或更多的空白字符,然后是在一行的末尾(即除了空白之外没有其他内容),并显示匹配行的计数(-c)而不是匹配的行本身.
此方法相对于涉及管道的方法的一个优点wc是,您可以指定多个文件并为每个文件获取单独的计数:
$ grep -cve '^\s*$' *.hh
config.hh:36
exceptions.hh:48
layer.hh:52
main.hh:39
Run Code Online (Sandbox Code Playgroud)
Jon*_*ley 13
'wc'计算行,单词,字符,所以计算所有行(包括空行)使用:
wc *.py
Run Code Online (Sandbox Code Playgroud)
要过滤掉空行,可以使用grep:
grep -v '^\s*$' *.py | wc
Run Code Online (Sandbox Code Playgroud)
'-v'告诉grep输出所有行,除了那些匹配'^'的行是'\ s'的开头''是零或者更多的空白字符'$'是行的结尾*.py是我的例子你想要计算的所有文件(当前目录中的所有python文件)管道输出到wc.就行了.
我正在回答我自己的(真实的)问题.找不到覆盖此内容的stackoverflow条目.
此命令计算项目中非空行的数量.cat fileName | grep -v ^$ | wc -l
grep -v ^ $正则表达式函数是忽略空行.
cat 'filename' | grep '[^ ]' | wc -l
Run Code Online (Sandbox Code Playgroud)
应该可以解决问题
小智 5
grep -cvE '(^\s*[/*])|(^\s*$)' foo
-c = count
-v = exclude
-E = extended regex
'(comment lines) OR (empty lines)'
where
^ = beginning of the line
\s = whitespace
* = any number of previous characters or none
[/*] = either / or *
| = OR
$ = end of the line
Run Code Online (Sandbox Code Playgroud)
我发布此内容是因为其他选项给了我错误的答案。这适用于我的 java 源,其中注释行以 / 或 * 开头(我在多行注释中的每一行上使用 * )。
| 归档时间: |
|
| 查看次数: |
116566 次 |
| 最近记录: |