Shell - seq 的一般用途和它相若的命令

来源:互联网 发布:农产品追溯系统源码 编辑:程序博客网 时间:2024/06/05 01:49
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

mkdir $(seq -f 'dir%03g' 1 10)
它用的是 printf 的格式 , %03g' 代表以三位浮點數,以此方法,如用bash3 的 printf
也可作為等價命令
printf 'dir%03d\n' {1..10} | xargs mkdir  或 mkdir `printf 'dir%03d ' {1..10}`
awk 當然也可以
awk 'BEGIN { while (num < 10 ) printf "dir%03d\n", ++num ; exit}' | xargs mkdir
這樣會比寫一個腳本快, 不必寫成
for dir in 001 002 003 004 005 006 007 008 009 010
do
    mkdir dir${dir}
done
我也常用 seq 下載一些用數字的 jpeg , 只要格式有數字順序便可,尤以一些 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 選項主要改變輸出的分格符, 預設是 \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
1
2
3
4
5
\t 便得改變IFS, 如用 \t\t
OIFS=$IFS
IFS="\t\t"
seq -s `echo -e $IFS` 1 5
IFS=$OIFS

其它的字符也是這樣吧?


-w 選項不太明白它的 help 寫什麼,也沒用過,還望大俠告訴小弟。 謝 :) 

簡單介紹了這個命令和使用,但只是無數的用法其中一二例子,在 *nix 的世界裏,一些小工具合在一起便成為強大
的工具, 只要你有創意便成了。

最後希望拋磚引玉,有大俠寫些心得。
0 0
原创粉丝点击