Mam iterację liczb w różnej kolejności. Jestem w stanie wyświetlać je w kolejności rosnącej, nawet w krokach takich jak:
$ seq --separator="," 1 10
1,2,3,4,5,6,7,8,9,10
$ seq --separator="," 1 2 10
1,3,5,7,9
Jestem również w stanie wyświetlać je w odwrotnej kolejności, ani w sposób ciągły, ani krokowy.
$ seq --separator="," 10 1
$ seq --separator="," 10 2 1
Brak danych wyjściowych dla powyższych poleceń.
Szczegóły mojej powłoki:
$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Daj mi znać, jak będę mógł wyświetlać liczby w kolejności malejącej?
command-line
seq
Mt.
źródło
źródło
seq
jest to całkowicie niestandardowe narzędzie i nie ma gwarancji, że dowolne dwa wdrożenia będą takie same. Jeśli potrzebujesz napisać pętlę, która będzie iterować wstecz po liczbach w bash, użyjfor ((i=$max;i>=0;i--)) …
lub tym podobnych.Odpowiedzi:
użyj przyrostu ujemnego
źródło
Zasadniczo nie chcesz używać
seq
, nie jest przenośny (nawet wśród standardowych środowisk Linux). Jeśli używasz ksh, zsh lub bash4 +, możesz użyć rozszerzenia nawiasów:źródło
seq
jest niestandardowa, a następnie użyj rozszerzenia nawiasów tylko dla bash-4. ;)seq
gdy nie.Innym sposobem jest czysty bash, ksh lub zsh:
Czysty sposób POSIX:
źródło
for
Drugim wyrażeniem powinien być test, a trzeci krok.Teraz standardowe POSIX:
(co ciekawe, z
mawk
(oraz w mniejszym stopniugawk
również) dużo szybciej niż GNUseq
dlai = 10000000
zamiasti = 10
)Lub
(byłby bardziej wydajny przy małej liczbie iteracji, szczególnie z
bash
)Lub
(który obsługuje liczby dowolnej wielkości, ale należy pamiętać, że po przekroczeniu pewnej liczby cyfr ( co najmniej liczby większe niż 10 70 w ustawieniach regionalnych POSIX), linie byłyby zawijane ukośnikami odwrotnymi)
źródło
BC_LINE_LENGTH=0
w środowisku. Brak szczęścia w przypadku innych wdrożeń.s=$s,$i
lub wywoływaćecho -n
/echo \c
/printf
?Możesz odwrócić kolejność za pomocą
tac
(cat in reverse). Nawet jeśliseq
powinny zachowywać się inaczej w różnych systemach, myślę, że następujące elementy powinny być tak przenośne, jak to możliwe:źródło
Spróbuj z:
Przykład:
Sekw. 10–1 1
źródło