2013-02-25 1 views
4

내가 다음과 같습니다 ~ 1,000 선을 가진 파일이 값 :유닉스 열을 기준으로 무작위로 선택 라인은

ABC C5A 1 
CFD D5G 4 
E1E FDF 3 
CFF VBV 1 
FGH F4R 2 
K8K F9F 3 
... etc 

내가 100 개 임의의 줄을 선택하고 싶은,하지만 각각의 세 번째 열 값의 10 (와 그래서 열 3에 값 "1"을 갖는 모든 라인으로부터 임의의 10 라인, 컬럼 3에 값 "2"를 갖는 모든 라인으로부터 무작위로 10 라인 등).

bash를 사용하면 가능합니까?

답변

3

당신이 awk를 사용할 수있는 경우에, 당신은 한 줄

sort -R file | awk '{if (count[$3] < 10) {count[$3]++; print $0}}' 
과 같은 작업을 수행 할 수 있습니다
7

처음으로 grep 모든 파일을 특정 번호로 섞어서 셔플하고 shuf -n 10을 사용하여 처음 10 개를 선택하십시오. 당신이 shuf이없는 경우

for i in {1..10}; do 
    grep " ${i}$" file | shuf -n 10 
done > randomFile 

, 무작위로 대신 그들을 정렬 sort -R를 사용

for i in {1..10}; do 
    grep " ${i}$" file | sort -R | head -10 
done > randomFile