我看到这个问题:在bash中计算(非空白)代码行数
我明白这个模式是正确的。
grep -vc ^$ filename
为什么这个模式返回相同的结果?
grep -c '[^ ]' filename
'[^ ]'
是什么把戏?
$ printf 'foo 123n nxyzntn' > ip.txt
$ cat -T ip.txt
foo 123
xyz
^I
$ grep -vc '^$' ip.txt
4
$ grep -c '[^ ]' ip.txt
3
$ grep -c '[^[:blank:]]' ip.txt
2
grep -c '[^ ]'
计算任何包含非空格字符的行。例如,foo 123
将被计算在内,因为字母不是空格字符。因此,使用哪一个取决于只包含空格字符的行是否应该计数。