博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux中seq命令用法
阅读量:6619 次
发布时间:2019-06-25

本文共 2907 字,大约阅读时间需要 9 分钟。

hot3.png

用于产生从某个数到另外一个数之间的所有整数
例一:
# 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
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
其它的字符也是這樣吧?

 

seq命令的作用就是打印出一串有序的数字,它主要有以下3个参数构成:

       -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 指定分隔符 默认是回车:
例如:
[root@hao32]# seq -s" " 2 7
2 3 4 5 6 7

       -w, --equal-width

equalize width by padding with leading zeroes
-w 输出是同宽 前面不足的用 "0" 补全,即与位数最多的数对齐
例如:
[root@hao32]# seq -w 2 11
02
03
04
05
06
07
08
09
10
11

转载于:https://my.oschina.net/willSoft/blog/39505

你可能感兴趣的文章
母函数问题【转】
查看>>
Hadoop之mapreduce 实例二
查看>>
【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别
查看>>
数据库编程
查看>>
实体类中用基本类型好,还是用包装类型
查看>>
readl(), writel() 函数使用举例
查看>>
linux的命令
查看>>
IE11 开启F12开发人员工具中的 始终从服务器刷新
查看>>
取得某个数组前key大 PHP实现
查看>>
用友NC V6.3打造集团企业高效信息平台
查看>>
Python web前端 07 函数及作用域
查看>>
[Swift A] - Welcome to Swift
查看>>
我的学习思维:有关阅读的方法
查看>>
JAVA - 多线程 两种方法的比较
查看>>
mysql中查看视图的元数据?
查看>>
js ajax跨域调用
查看>>
记一次基于vue的spa多页签实践经验
查看>>
学习函数指针的笔记
查看>>
BZOJ4229选择——LCT+并查集+离线(LCT动态维护边双连通分量)
查看>>
robocopy——Windows下的高效文件拷贝
查看>>