В подсчет (непустые) строки кода в bash они объясняют, как подсчитывать количество непустых строк.
Но есть ли способ подсчитать количество пустых строк в файле? Пустой линией я также подразумеваю линии, в которых есть пробелы.
В подсчет (непустые) строки кода в bash они объясняют, как подсчитывать количество непустых строк.
Но есть ли способ подсчитать количество пустых строк в файле? Пустой линией я также подразумеваю линии, в которых есть пробелы.
Другой способ:
grep -cvP '\S' file
-P '\S'
(perl regex) будет соответствовать любой строке, содержащей пробел-v
выберите несогласованные строки-c
напечатать количество совпадающих строкЕсли ваш grep не поддерживает параметр -P
, используйте -E '[^[:space:]]'
Один из способов: grep
:
grep -c "^$" file
Или с пробелом:
grep -c "^\s*$" file
Использование однострочного интерфейса Perl:
perl -lne '$count++ if /^$/; END { print int $count }' input.file
Чтобы подсчитать, сколько бесполезных пустых строк ваш коллега вставил в проект, вы можете запустить однострочную команду следующим образом:
blankLinesTotal=0; for file in $( find . -name "*.cpp" ); do blankLines=$(grep -cvE '\S' ${file}); blankLinesTotal=$[${blankLines} + ${blankLinesTotal}]; echo $file" has" ${blankLines} " empty lines." ; done; echo "Total: "${blankLinesTotal}
Отпечатки:
<filename0>.cpp #blankLines
....
....
<filenameN>.cpp #blankLines
Total #blankLinesTotal
Вы также можете использовать awk
для этого:
awk '!NF {sum += 1} END {print sum}' file
Из руководства "Переменная NF установлена на общее число полей во входной записи". Поскольку разделитель полей по умолчанию - это пространство, любая строка, состоящая либо из ничего, либо из каких-либо пробелов, будет иметь NF=0
.
Затем, это вопрос подсчета, сколько раз это происходит.
$ cat a
aa dd
ddd
he llo
$ cat -vet a # -vet to show tabs and spaces
aa dd$
$
ddd$
$
^I$
he^Illo$
Теперь давайте подсчитаем количество пустых строк:
$ awk '!NF {s+=1} END {print s}' a
3
grep -v '\S' | wc -l
(В OSX выражения Perl недоступны, опция -P)