Как посчитать, сколько строк в текстовом файле. например:
command file.txt
Заметьте, я хочу считать только непустые строки (строки без подсчета пробелов и табуляции)?
command-line
user93097373
источник
источник
\r
) или пропустить их. Ток отвечает всем счетным строкам пробелами и пропускает только пустые.\r
или\n
), строки-только-табуляции и строки-только-пробелы) и не пропускать их, как я думаю, и отвечал согласно То, что я понял.Ответы:
Приведенный выше ответ верен, но немного отличается, вы можете использовать
grep
для более простого кода, такогоgrep -vc '^$' file.txt
Например (A): file.txt
Например (B): file.txt
Обратите внимание на результат 4! когда мы хотим ожидать только два. но это также учитывает вкладки между контентом и комментариями.
Обратите внимание, что отсчет от 0 до 1 отличается от grep до sed, как я помню, для более подробной информации ищите grep или sed.
источник
sed
вариант на самом деле правильно, ноgrep
один неПопробуй
sed
:Если у вас есть какие-либо строки, содержащие только пробелы или символы табуляции и если вы хотите игнорировать их также из счета:
источник
^\s*$
чтобы учитывать строки, содержащие только табуляцию или пробелы.Использование
grep
:источник
Ты можешь использовать:
Если вам нужна команда для этого, просто вставьте следующие строки в ваш
.bashrc
и перезапустите сеанс оболочки или откройте новый терминал:Пример:
источник
С awk :
Объяснение:
NF
Указывает общее количество полей, и , следовательно , это печатает только непустые строки , так как в не пустых строкNF
больше0
и имеет значение верно. Так что увеличивайте флаг подсчета, когда awk обнаружил непустые строки и печатайте последнее значение флага подсчета в конце с помощьюEND{print count}
.источник
Изменить : вы можете просто добавить
c
опциюgrep
вместо того, чтобыwc
обвязать все , смотрите ответ @ muru для более компактной версииС
grep
:источник
Perl решение
Perl может сделать это. В общем случае подсчет строк работает так:
Если мы хотим исключить все пустые строки, мы сделаем что-то вроде этого:
Допустим, у нас есть входной файл, как это
Всего 5 строк, 2 пустых строки. Команда, которую мы имеем, выведет:
Многофайловое улучшение
Это хорошо работает для одного файла. Если мы хотим, чтобы он работал с несколькими файлами, мы можем сделать что-то вроде этого:
источник