다음과 같은 것이 있다면:
echo 1 2 3 4 5 6
또는
echo man woman child
1 2 3 4 5 6
또는 의 한 요소를 선택하려면 파이프 뒤에 무엇을 넣어야 합니까 man woman child
?
echo 1 2 3 4 5 6 | command
3
답변1
시스템에 shuf
다음 명령이 있는 경우
echo 1 2 3 4 5 | xargs shuf -n1 -e
실제로 입력이 아닌 경우필요표준 입력을 통해 에코하려면 다음을 사용하는 것이 좋습니다.
shuf -n1 -e 1 2 3 4 5
답변2
shuf(훌륭한 도구)는 없지만 bash가 있는 경우 bash 전용 버전은 다음과 같습니다.
function ref { # Random Element From
declare -a array=("$@")
r=$((RANDOM % ${#array[@]}))
printf "%s\n" "${array[$r]}"
}
ref man woman child
대신에 호출의 의미를 바꿔야 합니다 echo man woman child | command
. 이는 $RANDOM
"강하게" 무작위가 아닐 수 있습니다. Stephane의 설명을 참조하세요.https://unix.stackexchange.com/a/140752/117549
다음은 사용 예와 무작위(!) 샘플링입니다(선행 $
은 셸 프롬프트이므로 입력하지 마세요).
$ ref man woman child
child
$ ref man woman child
man
$ ref man woman child
woman
$ ref man woman child
man
$ ref man woman child
man
$ ref 'a b' c 'd e f'
c
$ ref 'a b' c 'd e f'
a b
$ ref 'a b' c 'd e f'
d e f
$ ref 'a b' c 'd e f'
a b
# showing the distribution that $RANDOM resulted in
$ for loop in $(seq 1 1000); do ref $(seq 0 9); done | sort | uniq -c
93 0
98 1
98 2
101 3
118 4
104 5
79 6
100 7
94 8
115 9