빠르게 줄을 센다

빠르게 줄을 센다

저는 Windows 7을 사용하고 있으며 GnuWin32를 사용하고 있습니다. LF( \n) 줄 끝이 있는 몇 기가바이트 크기의 텍스트 파일이 있습니다 . 나는 그것이 얼마나 많은 라인을 가지고 있는지 알고 싶습니다. 또는 대안으로 얼마나 많은 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 -pe '}{$_=$.' foo

이상한 솔루션

awk 'END { print NR }' foo

추가 읽기

답변2

나에게 가장 빠른 것은 명령줄입니다.find /v /c "" foo.txt

아직 적절한 벤치마크를 수행하지 않았지만 2GB RAM 서버에서 10GB 파일을 시도했지만 type완료 (get-content foo | measure-object -line)하는 데 너무 오랜 시간이 걸렸습니다. 그러나 충분히 빨리 반환됨을 찾으십시오.

관련 정보