2009年4月9日 星期四

linux指令 - seq

linux指令 - seq

這一個指令在script會常常用到~可以建立一個有規律的字串與數字,非常好用~
由其在迴圈時,更是常使用到。
$ seq 5
1
2
3
4
5


$ seq 2 5
2
3
4
5


$ seq 1 2 5
1
3
5


還有以下三個參數
-f, --format=FORMAT use printf style floating-point FORMAT (default: %g)
-s, --separator=STRING use STRING to separate number (default:\n)
-w, --equal-width equalize with 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


-s 選項主要改變輸出的分格符, 預設是 \n , 就是 newline
如用 -s 便可改變 , 以空格作為分格,如:
$ seq -s ' ' 1 10
1 2 3 4 5 6 7 8 9 10

-w 根據數字寬度,自動在不足位前補0
$ seq 1 10
01
02
03
04
05
06
07
08
09
10

參考資料:
seq 的一般用途和它相若的命令

沒有留言: