天天看点

seq 命令的用法

用于产生从某个数到另外一个数之间的所有整数

  例一:

  # seq 1 10

  结果是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 选项   指定格式

#seq -f"%3g" 9 11

  9

 10

 11

% 后面指定数字的位数 默认是"%g",  

  "%3g"那么数字位数不足部分是空格 

 #sed -f"%03g" 9 11  这样的话数字位数不足部分是0 

% 前面制定字符串

seq -f "str%03g" 9 11

str009

str010

str011

-w 指定输出数字同宽   不能和-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 指定分隔符  默认是回车

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

得 到的是个错误结果

不过一般也没有这个必要  它默认的就是回车作为分隔符

几个例子

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 中一個預設的外部命令,一般用作一堆數字的簡化寫法,如

seq 1 10

便會出現 

1

2

3

4

5

6

7

8

9

10 

它還有三個選項

-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 個名 dir001 , dir002 .. dir010 的目錄,它便很有用途,我們可以

這樣下一個命令便可了

seq -f ‘dir%03g’ 1 10 | xargs mkdir

它用的是 printf 的格式 , %03g’ 代表以三位浮點數,以此方法,如用bash3 的 printf

也可作為等價命令

printf ‘dir%03d/n’ {1..10} | xargs mkdir  或 mkdir `printf ‘dir%03d ‘ {1..10}`

awk 當然也可以

這樣會比寫一個腳本快, 不必寫成

for dir in 001 002 003 004 005 006 007 008 009 010

    mkdir dir${dir}

我也常用 seq 下載一些用數字的 jpeg , 只要格式有數字順序便可,尤以一些 xxx site  ;)

  if ! wget -P $HOME/tmp -c [img]http://www.xxxsite.com/photo/$i.jpg[/img] ; then

     wget -P $HOME/tmp -c $_ 

  fi

-s 選項主要改變輸出的分格符, 預設是 /n , 就是 newline

如用 -s 便可改變 , 如

seq -s ‘ ‘ 1 10

1 2 3 4 5 6 7 8 9 10  , 以空格作為分格, 但在 Gnu 的 seq , 好像

不支 援 /n ,/t …等字符? 如用/n/n, 以兩個空格 , 便得寫成

[victor@localhost ~]$ seq -s ‘

>

> ‘ 1 5