用于产生从某个数到另外一个数之间的所有整数例一:
# seq 1 10
结果是1 2 3 4 5 6 7 8 910
例二:
#!/bin/bash
for i in `seq 1 10`;
do
echo $i;
done
或者用
for i in $(seq 1 10)
也可以
seq
-f,--format=FORMATuse printf style floating-point FORMAT (default: %g)
-s, --separator=STRING useSTRING to separate numbers (default: n)
-w,--equal-widthequalizewidth by padding with leading zeroes
-f 选项 指定格式
#seq -f"%3g" 9 11
9
10
11
% 后面指定数字的位数 默认是"%g",
"%3g"那么数字位数不足部分是空格
#sed -f"g" 9 11 这样的话数字位数不足部分是0
% 前面制定字符串
seq -f "strg" 9 11
str009
str010
str011
-w 指定输出数字同宽 不能和-f一起用
seq -w -f"strg" 9 11
seq: format string may not be specified when printing equal widthstrings
seq -w 98 101
098
099
100
101
输出是同宽的
-s 指定分隔符 默认是回车
seq -s" " -f"strg" 9 11
str009 str010 str011
要指定t 做为分隔符号
seq -s"`echo -e "t"`" 9 11
指定nn作为分隔符号
seq -s"`echo -e "nn"`" 9 11
19293949596979899910911
得到的是个错误结果不过一般也没有这个必要它默认的就是回车作为分隔符
几个例子
awk 'BEGIN { while (num < 10 ) printf "dirdn", ++num ; exit}' |xargs mkdir
mkdir $(seq -f 'dirg' 1 10)
for i in `seq -f 'g' 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 -f 'dirg' 1 10 | xargsmkdir
或
mkdir $(seq -f 'dirg' 1 10)
它用的是printf 的格式, g'代表以三位浮點數,以此方法,如用bash3 的printf
也可作为等价命令
printf 'dirdn' {1..10} | xargs mkdir或mkdir `printf'dird ' {1..10}`
awk 也可以
awk 'BEGIN { while (num < 10 ) printf "dirdn", ++num ; exit}' |xargs mkdir
-s 選項主要改变输出的分格符, 默认是n ,就是newline
如用-s 便可改变,如
seq -s ' ' 1 10
1 2 3 4 5 6 7 8 9 10 , 以空格作为分格, 但在Gnu的seq ,好像不支援n ,t ...等字符?如用nn,以兩個空格, 便得寫成
[victor@localhost ~]$ seq -s '
>
> ' 1 5
1
2
3
4
5
t 便得改變IFS,如用tt
OIFS=$IFS
IFS="tt"
seq -s `echo -e $IFS` 1 5
IFS=$OIFS
其它的字符也是這樣吧?