Считай строки быстро

Считай строки быстро

Я работаю под управлением Windows 7 и GnuWin32. У меня есть текстовый файл размером в несколько гигабайт с \nокончаниями строк LF ( ). Я хочу узнать, сколько в нем строк (или, как вариант, сколько в нем LF, что, скажем, на одну меньше, но мне все равно). Какой самый быстрый или наименее затратный способ получить мой ответ?

Вот несколько возможностей (хотя я уверен, что некоторые из них я упускаю):

  • wc -l foo
  • grep -c $ foo-c, печатает только количество совпадающих строк)
  • grep -c ^^ foo(первый курсор обходит второй)
  • sed -n $= foo( -nпредотвращает печать строки; $ограничивается последней строкой; =печатает номер строки)

(Это утилиты GnuWin32. Я не знаю ни одного встроенного в Windows способа.)

решение1

Решение командной строки Windows

type foo | find "" /v /c

Решения Powershell

(get-content foo | measure-object -line).lines

(dir foo | select-string .).count

(type foo).count

(gc foo | measure-object | select count).count

решение perl

perl -pe '}{$_=$.' foo

решение awk

awk 'END { print NR }' foo

дальнейшее чтение

решение2

Для меня самым быстрым является командная строка:find /v /c "" foo.txt

Мне еще предстоит провести надлежащий бенчмарк, но я пробовал typeи (get-content foo | measure-object -line)для файла 10 ГБ на сервере с 2 ГБ оперативной памяти, но они заняли слишком много времени для завершения. Find, однако, вернулся достаточно быстро

Связанный контент