简介
Linux中的seq命令,通过指定起始值、递增值和结束值,以及分隔符、前缀、后缀和宽度的形式,生成特定样式的序列。
seq
命令有如下三种调用形式:
-
seq [OPTION] ... LAST
-
seq [OPTION] ... FIRST LAST
-
seq [OPTION] ... FIRST INCREMENT LAST
FIRST
、INCREMENT
、LAST
均被看做浮点数。当省略 FIRST
或者 INCREMENT
时,它们的值均默认为 1。
选项详解
-
-s
指定序列元素间的分隔符,默认为
\n
; -
-w
将序列各元素设置为等宽,用前导0补齐位数。起始值、递增值、结束值都应该用点分十进制表示。
-
-f
使用
printf
样式的浮点数格式输出序列各元素。该选项的值必须使用一对单引号或者双引号包裹,其值的格式应为:[prefix]%[padding][flag][width][.][percision]formatter[suffix]
其中 % 和
formatter
是必须的,其他均为可选项:- prefix :为序列元素的前缀,若要包含
%
,必须使用%
进行转义;
- suffix: 为序列元素的后缀,若要包含
%
,必须使用%
进行转义;
-
padding: 为填充字符,默认为空格,可以显式指定为空格或者
0
; -
flag:可以是
-+# 0
中的一个或多个字符; -
width: 表示数值部分的宽度,若指定的宽度小于生成的序列中宽度最大的一个值的宽度,则不足的部分仍以填充字符填充,超过宽度的以实际宽度为准;
-
pricision:表示精度的 0 个或多个数字;
-
formatter:
eEfgG
中的任意一个字符;
- prefix :为序列元素的前缀,若要包含
注意:
-f
和-w
参数不能同时指定。
示例
只指定结束值:
$ seq 5
1
2
3
4
5
指定起始值和结束值:
$ seq 1 5
1
2
3
4
5
指定起始值为、递增值和结束值:
$ seq 1 2 10
1
3
5
7
9
$ seq 5 -1.5 -4
5.0
3.5
2.0
0.5
-1.0
-2.5
-4.0
指定起始值、结束值和分隔符:
$ seq -s '-' 5 10
5-6-7-8-9-10
$ seq -s 'and' 5 10
5and6and7and8and9and10
指定起始值、结束值、序列元素分隔符以及序列元素等宽;
$ seq -w -s '*' 8 13
08*09*10*11*12*13
指定序列元素前缀为字符串 Player
,数值部分宽度为2,填充字符为默认值空格,序列元素后缀为字符串 is the best
,起始值为8,结束值为13:
Player 8 is the best
Player 9 is the best
Player10 is the best
Player11 is the best
Player12 is the best
Player13 is the best
指定序列元素前缀为字符串 Player
,数值部分宽度为2,填充字符为0,序列元素后缀为字符串 is the best
,起始值为1,结束值为5:
$ seq -f 'Player%02g is the best' 8 13
Player08 is the best
Player09 is the best
Player10 is the best
Player11 is the best
Player12 is the best
Player13 is the best
指定填充字符为0,数值部分宽度为4,起始值为999,递增值为4000,结束值为13001:
注意:
因为指定的宽度为4,而结束值的宽度为5,所以序列中的第一个元素需要用填充字符
0
补齐,而序列中的最后一个元素则显示为实际的宽度。
$ seq -f '%04g' 999 4000 13001
0999
4999
8999
12999
指定填充字符为0,数值部分宽度为6,起始值为-5,递增值为2.5,结束值为5;
$ seq -f '%06g' -5 2.5 5
-00005
-002.5
000000
0002.5
000005
使用 -f
选项对序列元素进行格式化:
$ seq -f '占比为%5.3f%%' 85 90
占比为85.000%
占比为86.000%
占比为87.000%
占比为88.000%
占比为89.000%
占比为90.000%
$ seq -f '占比为%5g%%' 85 90
占比为 85%
占比为 86%
占比为 87%
占比为 88%
占比为 89%
占比为 90%
$ seq -f 'result is: %5g%%' -3 3
result is: -3%
result is: -2%
result is: -1%
result is: 0%
result is: 1%
result is: 2%
result is: 3%
$ seq -f 'result is: %#5g%%' -3 3
result is: -3.00000%
result is: -2.00000%
result is: -1.00000%
result is: 0.00000%
result is: 1.00000%
result is: 2.00000%
result is: 3.00000%