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

関連情報