linux操作系統(tǒng)中的seq命令用法大全【轉(zhuǎn)載】

該命令用于產(chǎn)生從某個數(shù)到另外一個數(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

得到的是個錯誤結(jié)果

不過一般也沒有這個必要? 它默認(rèn)的就是回車作為分隔符

幾個例子

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

seq 1 10

便會出現(xiàn)

1

2

3

4

5

6

7

8

9

10

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

這樣下一個命令便可了

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

mkdir $(seq -f 'dir%03g' 1 10)

它用的是printf 的格式, %03g' 代表以三位浮點(diǎn)數(shù),以此方法,如用bash3 的printf

也可作為等價命令

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

這樣比寫一個腳本快,亦可寫成

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, 以兩個空格, 便得寫成

[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個參數(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 有改動。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容