seq命令是sequence的缩写,用于以递增或者递减的方式打印数字序列
May 26, 2022
seq命令是sequence的缩写,用于以递增或者递减的方式打印数字序列。换句话说,就是打印指定数值的范围。数字可以是整数或带小数点的实数,也可以是负数。你也可以指定序列的上限或者下限等。
在本教程中,我们将说明如何使用seq命令和seq常用的命令选项,例如打印数字序列直到上限,在下限和上限数字之间打印指定的值,打印具有自定义增量序列,以递减或者倒序的方式打印序列,以相同的位数打印序列,以指定格式打印序列,使用指定的分隔符打印序列,最后我们还举例一个实际的应用示例提供给你参考。 打印数字序列直到上限
在最简单的形式中,您为seq指定一个上限,它将打印从1到上限的序列。
seq n
这是一个例子:
➜ myfreax seq 9 1 2 3 4
在下限和上限数字之间的打印指定值
您可以按升序方式提供下限值和上限值两个数字,seq将打印从小到大的数字序列。
seq n1 n2
看看这个例子:
➜ myfreax seq 3 6 3 4 5 6
打印具有自定义增量序列
到目前为止,序列中的增量为1。但您也可以在下限和上限之间自定义增量。
seq n1 inc n2
增量值可以是整数或小数或者是负数。
➜ myfreax seq 3 0.5 6 3.0 3.5 4.0 4.5 5.0 5.5 6.0
以递减或者倒序的方式打印序列
另一个技巧是以递减或者倒序的方式打印一个序列。因此,您必须指定一个负增量值。
➜ myfreax seq 6 -1 4 6 5 4
当你输入0.7作为递增值时,会发生什么?在这种情况下,seq不会超过上限。
➜ myfreax seq 3 0.7 6 3.0 3.7 4.4 5.1 5.8
到目前为止,您还没有使用seq命令的任何选项。让我们看看并使用seq的选项。 以相同的位数打印序列
seq命令的选项w用于保持打印数字的居于相同的位数。你会发现当打印的值不足时,seq将会在前面以0填充。示例如下:
➜ myfreax seq -w 9 11 09 10 11
以指定格式打印序列
您可以使用选项f将输出行格式化为指定格式。示例如下:
➜ myfreax seq -f '##%g##' 3 5
3
4
5
%g用于整数格式显示数字。%e以指数格式显示数字,%f浮点格式显示数字。 使用指定的分隔符打印序列
到目前为止,序列都是垂直打印的。这是因为默认情况下,分隔符是换行符。您可以使用选项s指定分隔符。示例如下:
➜ myfreax seq -s ':' 4 1:2:3:4
分隔符之的'单引号不是必需的,但它有助于避免shell的解释。如果你使用对于shell有语义的字符比如$,这一个正则表达式的通配符,如果不加'单引号,shell将会解释$符号。 seq命令的实际应用
您可能想知道这个seq命令的实际用途是什么。有很多情况可以使用它。我能想到的一个示例是当您在bash中使用for循环时。您可以使用seq命令,而不是在循环条件中手动指定序列。
!/bin/bash
for i in $(seq 4 2 18) do echo "Number $i" done
当您运行上述bash脚本时,它将循环指定的序列并打印值。
➜ myfreax bash seq.sh Number 4 Number 6 Number 8 Number 10 Number 12 Number 14 Number 16 Number 18
结论
你已经知道如何使用seq命令和基础的选项。seq命令会在你指定的数值之间打印一系列的值。也可以是从负数开始,以及在实际中的应用。如果你想编写一个自己seq命令,可以参考我们一个教程-Bash Sequence序列表达式(Range)。如果您想了解更多详细信息,可以随时使用它的手册页。