Считайте строки быстро
Я использую 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
дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- find - поиск текстовой строки в файле и отображение всех строк, где она найдена.
- Индекс AZ команд Windows PowerShell - отличный справочник для всего, что связано с PowerShell.
Самым быстрым для меня является командная строка: find /v /c "" foo.txt
Я еще не сделал правильный тест, но я пытался type
а также (get-content foo | measure-object -line)
для файла 10 ГБ на 2 ГБ оперативном сервере, но они заняли слишком много времени, чтобы завершить. Найти однако вернулся достаточно быстро