2

Linux中的seq命令

 2 years ago
source link: https://www.myfreax.com/seq-command-in-linux/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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)。如果您想了解更多详细信息,可以随时使用它的手册页


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK