該命令用于產(chǎn)生從某個(gè)數(shù)到另外一個(gè)數(shù)之間的所有整數(shù)
例一:
# seq 1 10
結(jié)果是1 2 3 4 5 6 7 8 9 10
例二:
#!/bin/bash
for i in `seq 1 10`;
do
echo $i;
done
或者用
for i in $(seq 1 10)
也可以
seq
-f, --format=FORMAT????? use printf style floating-point FORMAT (default: %g)
-s, --separator=STRING?? use STRING to separate numbers (default: \n)
-w, --equal-width??? ????equalize width by padding with leading zeroes
-f 選項(xiàng)?? 指定格式
#seq -f"%3g" 9 11
9
10
11
% 后面指定數(shù)字的位數(shù) 默認(rèn)是"%g",
"%3g"那么數(shù)字位數(shù)不足部分是空格
#sed -f"%03g" 9 11? 這樣的話數(shù)字位數(shù)不足部分是0
% 前面制定字符串
seq -f "str%03g" 9 11
str009
str010
str011
-w 指定輸出數(shù)字同寬?? 不能和-f一起用
seq -w -f"str%03g" 9 11
seq: format string may not be specified when printing equal width strings
seq -w 98 101
098
099
100
101
輸出是同寬的
-s 指定分隔符? 默認(rèn)是回車
seq -s" " -f"str%03g" 9 11
str009 str010 str011
要指定\t 做為分隔符號
seq -s"`echo -e "\t"`" 9 11
指定\n\n作為分隔符號
seq -s"`echo -e "\n\n"`" 9 11
19293949596979899910911
得到的是個(gè)錯(cuò)誤結(jié)果
不過一般也沒有這個(gè)必要? 它默認(rèn)的就是回車作為分隔符
幾個(gè)例子
awk 'BEGIN { while (num < 10 ) printf "dir%03d\n", ++num ; exit}' | xargs mkdir
mkdir $(seq -f 'dir%03g' 1 10)
for i in `seq -f '%02g' 1 20`
do
if ! wget -P $HOME/tmp -c [img]http://www.xxxsite.com/photo/$i.jpg[/img] ; then
wget -P $HOME/tmp -c $_
fi
done
seq 是Linux中一個(gè)預(yù)設(shè)的外部命令,一般用作一堆數(shù)字的簡化寫法恭朗,如
seq 1 10
便會出現(xiàn)
1
2
3
4
5
6
7
8
9
10
它還有三個(gè)選項(xiàng)
-f, --format=FORMAT????? use printf style floating-point FORMAT (default: %g)
-s, --separator=STRING?? use STRING to separate numbers (default: \n)
-w, --equal-width??????? equalize width by padding with leading zeroes
-f 最常用, 例如一次制做10 個(gè)名dir001 , dir002 .. dir010 的目錄屏镊,它便很有用途,我們可以
這樣下一個(gè)命令便可了
seq -f 'dir%03g' 1 10 | xargs mkdir
或
mkdir $(seq -f 'dir%03g' 1 10)
它用的是printf 的格式, %03g' 代表以三位浮點(diǎn)數(shù),以此方法,如用bash3 的printf
也可作為等價(jià)命令
printf 'dir%03d\n' {1..10} | xargs mkdir? 或mkdir `printf 'dir%03d ' {1..10}`
awk 當(dāng)然也可以
awk 'BEGIN { while (num < 10 ) printf "dir%03d\n", ++num ; exit}' | xargs mkdir
這樣比寫一個(gè)腳本快痰腮,亦可寫成
for dir in 001 002 003 004 005 006 007 008 009 010
do
mkdir dir${dir}
done
我也常用seq 下載用數(shù)字的jpeg , 只要格式有數(shù)字順序便可,尤以一些xxx site
for i in `seq -f '%02g' 1 20`
do
if ! wget -P $HOME/tmp -c [img]http://www.xxxsite.com/photo/$i.jpg[/img] ; then
wget -P $HOME/tmp -c $_
fi
done
-s 選項(xiàng)主要改變輸出的分格符, 預(yù)設(shè)是\n , 就是newline
如用-s 便可改變, 如
seq -s ' ' 1 10
1 2 3 4 5 6 7 8 9 10? , 以空格作為分格, 但在Gnu 的seq , 好像
不支援\n ,\t ...等字符而芥? 如用\n\n, 以兩個(gè)空格, 便得寫成
[victor@localhost ~]$ seq -s '
>
> ' 1 5
1
2
3
4
5
\t 便得改變IFS, 如用\t\t
OIFS=$IFS
IFS="\t\t"
seq -s `echo -e $IFS` 1 5
IFS=$OIFS
其它的字符也是這樣吧?
seq命令的作用就是打印出一串有序的數(shù)字,它主要有以下3個(gè)參數(shù)構(gòu)成:
-f, --format=FORMAT
use printf style floating-point FORMAT (default: %g)
-f 指定打印的格式:
例如:
[root@hao32]# seq -f %05g 2 7
00002
00003
00004
00005
00006
00007
-s, --separator=STRING
use STRING to separate numbers (default: \n)
-s 指定分隔符 默認(rèn)是回車:
例如:
[root@hao32]# seq -s" " 2 7
2 3 4 5 6 7
-w, --equal-width
equalize width by padding with leading zeroes
-w 輸出是同寬 前面不足的用"0" 補(bǔ)全膀值,即與位數(shù)最多的數(shù)對齊
例如:
[root@hao32]# seq -w 2 11
02
03
04
05
06
07
08
09
10
11
源網(wǎng)址:http://www.2cto.com/os/201202/118033.html 有改動棍丐。