파일이나 스트림에서 샘플을 얻으시겠습니까?

파일이나 스트림에서 샘플을 얻으시겠습니까?

명령줄의 스트림에서 샘플을 필터링하는 유틸리티가 있습니까?

  • 파일의 100줄마다 인쇄하거나
  • 확률 0.01로 파일의 한 줄을 인쇄하거나
  • 이런 알고리즘으로저수지 샘플링?

업데이트: 지금까지 내가 찾은 내용은 다음과 같습니다.

  • 파일의 100줄마다 인쇄합니다.sed -n '0~100p'

답변1

(GNU) awk를 사용한 간단한 솔루션:

100개 각각(100으로 나눌 수 있는 숫자가 있는 행):

do_something | awk 'NR % 100 == 0'

또는 의사 무작위로:

do_something | awk 'rand() < 0.01' 

BEGIN{ srand() }이 숫자는 정확히 일치하지 않을 수 있으며 각 실행에 대한 새 시드를 초기화하기 위해 추가해야 할 수도 있습니다 .

답변2

( )를 sort지원하는 GNU가 컴퓨터에 있으면 다음 을 수행할 수 있습니다.-R--random-sort

$ sort -R myfile | head -n 1000

파일에서 무작위로 1000줄을 가져옵니다. 그러나 sort작업을 수행하려면 전체 입력을 읽어야 하므로 스트림에서는 작동하지 않습니다 .

관련 정보