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

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

Некоторые возможности (хотя я уверен, что мне не хватает некоторых):

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

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

2 ответа

Решение для командной строки 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 Solution

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

awk решение

awk 'END { print NR }' foo

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

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

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

Другие вопросы по тегам