linux shell 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 H O M E / t m p − c [ i m g ] h t t p : / / w w w . x x x s i t e . c o m / p h o t o / HOME/tmp -c [img]http://www.xxxsite.com/photo/ HOME/tmpc[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 KaTeX parse error: Expected '}', got 'EOF' at end of input: …10 do mkdir dir{dir}
done
我也常用seq 下載用數字的jpeg , 只要格式有數字順序便可,尤以一些xxx site
for i in seq -f '%02g' 1 20
do
if ! wget -P H O M E / t m p − c [ i m g ] h t t p : / / w w w . x x x s i t e . c o m / p h o t o / HOME/tmp -c [img]http://www.xxxsite.com/photo/ HOME/tmpc[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

kashu@ubuntu:/tmp$ seq 4 -1 1
4
3
2
1

以5为递增步长
kashu@ubuntu:~$ seq 0 5 10
0
5
10

作者:cqkxboy168
来源:CSDN
原文:https://blog.csdn.net/cqkxboy168/article/details/9157097
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值