seq(1)을 사용하여 숫자를 역순으로 표시하는 방법은 무엇입니까?

seq(1)을 사용하여 숫자를 역순으로 표시하는 방법은 무엇입니까?

나는 다양한 순서로 숫자를 반복합니다. 오름차순으로 표시할 수 있으며 다음 단계도 수행할 수 있습니다.

$ seq --separator="," 1 10
1,2,3,4,5,6,7,8,9,10
$ seq --separator="," 1 2 10
1,3,5,7,9

연속적으로나 단계적으로가 아닌 역순으로 표시할 수도 있습니다.

$ seq --separator="," 10 1   
$ seq --separator="," 10 2 1

위 명령의 출력은 없습니다.

내 쉘 세부사항:

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

숫자를 내림차순으로 표시하는 방법을 알려주세요.

답변1

음수 증분 사용

seq -s, 10 -2 1
10,8,6,4,2

답변2

일반적으로 말하자면, 사용하고 싶지 않으며 seq이식성이 없습니다(표준 Linux 환경에서도). ksh, zsh 또는 bash4+를 사용하는 경우 중괄호 확장을 사용할 수 있습니다.

echo {10..1..2} | tr " " ,
10,8,6,4,2

답변3

순수 bash, ksh 또는 zsh의 또 다른 방법:

for ((i=10;i>0;i-=2)) ; do echo -n "$i," ; done

순수 POSIX 방식:

i=10
while [ "$i" -gt 2 ]; do printf "$i,"; i=$((i-2)); done
echo "$i"

답변4

다음을 사용해 보세요:

   seq [OPTION]... FIRST INCREMENT LAST

예:

$ 시퀀스 10 -1 1

관련 정보