다양한 순서로 숫자를 반복했습니다. 다음과 같은 단계에서도 순서대로 표시 할 수 있습니다.
$ 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.
내림차순으로 숫자를 표시하는 방법을 알려주십시오.
답변
음수 증가를 사용하십시오
seq -s, 10 -2 1
10,8,6,4,2
답변
일반적으로을 사용하고 싶지 seq
않으며 이식성이 없습니다 (표준 Linux 환경에서도). ksh, zsh 또는 bash4 +를 사용하는 경우 중괄호 확장을 사용할 수 있습니다.
echo {10..1..2} | tr " " ,
10,8,6,4,2
답변
순수한 bash, ksh 또는 zsh의 다른 방법 :
for ((i=10;i>0;i-=2)) ; do echo -n "$i," ; done
순수한 POSIX sh 방법 :
i=10
while [ "$i" -gt 2 ]; do printf "$i,"; i=$((i-2)); done
echo "$i"
답변
이제 표준 POSIX 것들 :
awk 'BEGIN{for (i = 10; i > 0; i -= 2) print i}' | paste -sd , -
(흥미롭게도,과 mawk
(와 낮은 정도 gawk
)뿐만 아니라 훨씬 빨리 GNU 이상 seq
에 대한 i = 10000000
대신 i = 10
)
또는
i=10; set --
while [ "$i" -gt 0 ]; do
set -- "$@" "$i"
i=$(($i - 2))
done
IFS=,
echo "$*"
(특히 반복 횟수가 적을수록 더 효율적입니다 bash
)
또는
echo 'for(i=10;i>0;i-=2) i' | bc | paste -sd , -
(모든 크기의 숫자를 지원하지만 특정 숫자 수를 지나면 ( POSIX 로켈에서 10 70 보다 큰 숫자 ) 줄은 백 슬래시로 줄 바꿈됩니다)
답변
tac
(cat in reverse)를 사용하여 순서를 바꿀 수 있습니다 . seq
다양한 시스템에서 다르게 작동해야 하더라도 다음은 가능한 한 이식성이 있어야한다고 생각합니다.
$ seq 1 10 | tr '\012' ',' | sed 's/,$//'; echo
1,2,3,4,5,6,7,8,9,10
$ seq 1 10 | tac | tr '\012' ',' | sed 's/,$//'; echo
10,9,8,7,6,5,4,3,2,1
$
답변
시도해보십시오 :
seq [OPTION]... FIRST INCREMENT LAST
예:
$ seq 10-1 1