Как посчитать, сколько строк в текстовом файле. например:
command file.txt
Заметьте, я хочу подсчитывать только непустые строки (строки без подсчета пробелов и табуляции)?.
Вышеупомянутый ответ корректен, но немного отличается, можно использовать grep
к для более легкого кода такой grep -vc '^$' file.txt
Например (A) :file.txt
$grep -vc '^$' file.txt
1 First line #This is two tabs to comment.
2
4
3 Fourth line #Another two tabs to comment.
$2
Например (B) :file.txt
$sed '/^$/d' file.txt | wc -l
1 First line #This is two tabs to comment.
2
4
3 Fourth line #Another two tabs to comment.
$4
Заметьте, что результат равняется 4! когда мы хотим ожидать только два. но это считает вкладки промежуточными содержание и комментарий также.
Заметьте количества от 0 и количества от 1 его различное от grep до sed, как я помню за большее количество поиска деталей grep или sed.
Попробуйте sed
:
sed '/^$/d' file.txt | wc -l
, Если у Вас есть какие-либо строки, содержащие только, располагает с интервалами или вкладки и если Вы хотите проигнорировать их также от количества:
sed '/^[[:blank:]]*$/d' file.txt | wc -l
Используя grep
:
grep -vc '^ file # or
grep -vc '^\s* file
С awk:
awk 'NF{++count} END{print count}' file
Эти NF
указывает на общее количество полей, и следовательно это печатает только непустые строки , так как в непустых строках NF
больше, чем 0
и оценивает к истинному. Так увеличьте флаг количества , когда awk нашел непустые строки и печать последнее значение флаг количества в конце END{print count}
.
Можно использовать:
grep -cve '^\s* при необходимости в команде для этого, просто вставьте следующие строки в Ваш .bashrc
и перезапустите сессию оболочки или откройте новый терминал:
count_lines()
{
grep -cve '^\s* Пример:
count_lines file.txt
42
$1
}
Пример:
count_lines file.txt
42
file.txt
при необходимости в команде для этого, просто вставьте следующие строки в Ваш .bashrc
и перезапустите сессию оболочки или откройте новый терминал:
count_lines()
{
grep -cve '^\s* Пример:
count_lines file.txt
42
$1
}
Пример:
count_lines file.txt
42
Редактирование : можно просто добавить c
опция к grep
вместо того, чтобы передать все по каналу к wc
, видеть ответ @muru для более компактной версии
С grep
:
grep -v '^ file.txt | wc -l
для Perl может сделать это. В общем подсчете строки работает так:
$ perl -ne 'END{print $.}' input.txt
, Если мы хотим исключить все пустые строки, мы сделаем что-то вроде этого:
$ perl -ne '$c+=1 if not /^$|^\s+$/;END{print $c}' input.txt
Скажем, мы ввели файл как это
$ cat -n input.txt
1 Cat; Dog; Squirrel
2 ORGANISM Animalus terrus
3
4 Sequence: ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
5
существует 5 общих количеств строк, 2 пустых строки. Команда, которую мы имеем, произвела бы:
$ perl -ne '$c+=1 if not /^$|^\s+$/;END{print $c}' input.txt
3
<час> Это работает хорошо на единственный файл. Если мы хотим иметь его работающий над несколькими файлами, мы можем сделать что-то вроде этого:
$ perl -ne '$c+=1 if not /^$|^\s+$/;printf("%d %s\n",$c,$ARGV) and $c=0 if eof' input.txt /etc/passwd
3 input.txt
52 /etc/passwd