쉼표로 구분하여 생성하려고 합니다.무질서한1에서 10 사이의 정수 목록에서 다음을 시도했지만 결과는 순서가 지정된 목록입니다.
seq -s "," 10 | shuf
답변1
paste -s
연결 와이어를 사용할 수 있습니다 .
shuf -i1-10 | paste -sd, -
-i
shuf 옵션을 사용하여 양의 정수 범위를 지정합니다.
출력은 seq
shuf로 파이프될 수 있습니다.
seq 10 | shuf | paste -sd, -
또는 -e
매개변수를 뒤섞습니다.
shuf -e {1..10} | paste -sd, -
답변2
1부터 10까지 두 개의 숫자 목록이 있습니다. 어느 것이 필요합니까?
이를 설명하는 가장 좋은 방법은 비유를 사용하는 것입니다.
1부터 10까지의 숫자가 적힌 공 10개를 가방에 넣습니다. 매 라운드마다 공을 하나씩 꺼내서 숫자를 읽고, 공을 다시 가방에 넣지 마세요. 그러면 최대 10개의 숫자 목록이 생성됩니다. 모든 숫자가 목록에 나타나지만 (강제) 한 번만 나타납니다.
이러한 목록은 다음과 유사한 명령으로 생성됩니다.
$ echo $(seq 10 | shuf) | tr " " "," 10,7,5,2,3,9,1,4,8,6 $ shuf -i1-10 | paste -sd, - 1,9,4,6,2,8,10,5,3,7
1부터 10까지의 숫자가 적힌 공 10개를 가방에 넣습니다. 매 라운드마다 가방에서 공을 꺼내서 숫자를 읽은 다음반품공이 포켓에 넣어졌습니다. 목록은 무한할 수 있으며 숫자가 반복되는 데 시간이 걸릴 수 있습니다.
이러한 목록은 다음과 유사한 명령을 사용하여 생성할 수 있습니다.
$ shuf -n 20 -r -i1-10 | paste -sd, - 9,9,7,8,2,8,5,5,4,9,8,6,6,6,4,10,6,6,9,7
답변3
shuf
행 순서를 섞고 한 행만 제공하면 가능한 결과가 많지 않습니다. 대신에 줄을 입력하고 개행 문자를 쉼표로 변경하세요.
$ seq 10 | shuf | tr '\n' ',' | sed '$s/,$/\n/'
1,7,8,2,9,4,6,3,5,10
(마지막 것은 sed
마지막 쉼표를 개행 문자로 바꿉니다. 아마도 더 좋은 방법이 있을 것입니다 paste
.@rowboat의 답변)