Перейти к содержимому

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

2

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

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

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

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

1 281 просмотр
msh210 спросил 11 лет назад
M 100

2 ответа

3

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

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

DavidPostill ответил 11 лет назад
D 102 116
0

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

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

Вы предлагаете решение, которое уже предложено. Пожалуйста, платите ответ, только если он предоставляет дополнительную информацию. Вы сравнили несколько способов? Какие? Каков был результат? Каким был ваш тест? ...

Máté Juhász · 7 лет назад · 1

@ MátéJuhász Я не нашел его в другом месте, команда find отличается от type. Опубликовано в спешке, но обновит ответ с более подробной информацией.

Chibueze Opata · 7 лет назад · 0
Chibueze Opata ответил 7 лет назад
C 153