명령줄의 스트림에서 샘플을 필터링하는 유틸리티가 있습니까?
- 파일의 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
작업을 수행하려면 전체 입력을 읽어야 하므로 스트림에서는 작동하지 않습니다 .