首页 > 编程学习 > 【Linux command 05】seq Command on Linux

【Linux command 05】seq Command on Linux

发布时间:2022/10/1 0:27:24

在这里插入图片描述

1、Linux seq command

As already mentioned, the seq command lets you print a sequence of numbers. Following is its syntax:

seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST
用法:seq [选项]... 尾数
 或:seq [选项]... 首数 尾数
 或:seq [选项]... 首数 增量 尾数
以指定增量从首数开始打印数字到尾数。
 
  -f, --format=格式     使用printf 样式的浮点格式
  -s, --separator=字符串        使用指定字符串分隔数字(默认使用:\n)
  -w, --equal-width    在列前添加0 使得宽度相同【自动补位】
      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

以下是该工具的手册页如何解释它:

       Print numbers from FIRST to LAST, in steps of INCREMENT. If FIRST or 
       INCREMENT is omitted, it defaults to 1.  That is, an omitted  INCREMENT 
       defaults to 1 even when LAST is smaller than FIRST.  
       
       The sequence of numbers ends when the sum of the current number and  
       INCREMENT  would  become  greater than LAST.  FIRST, INCREMENT, and LAST 
       are interpreted as floating point values.  INCREMENT is usually positive if
       FIRST  is smaller than LAST, and INCREMENT is usually negative if FIRST
       is greater than LAST.  FORMAT must be suitable for printing  one  argu?
       ment  of type 'double'; it defaults to %.PRECf if FIRST, INCREMENT, and
       LAST are all fixed point decimal numbers with maximum  precision  PREC,
       and to %g otherwise.

2、 How seq command works?

<1> 如果您 seq使用单个数字作为命令行参数启动,它会从 1 计数到该数字。然后它在终端窗口中打印数字,每行一个数字,如下所示:

# seq 6
[root@localhost ~]# seq 6
1
2
3
4
5
6

在这里插入图片描述

<2> 如果在命令行中输入两个数字,第一个是起始数,第二个是结束数,如下图:

#seq 6 20
[root@localhost ~]# seq 6 20
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

在这里插入图片描述
<3> 还可以通过包含第三个数字来设置步长。它位于开始和结束数字之间。我们键入以下内容以要求 seq创建一个以 6 开头、以 48 结尾并使用 6 步长的数字列表:

# seq 6 6 48
[root@localhost ~]# seq 6 6 48
6
12
18
24
30
36
42
48

在这里插入图片描述

3、Counting Backward

还可以要求seq创建一个从最高到最低的数字列表。然而,要做到这一点,我们必须提供一个消极的步骤。

以下命令生成一个从 24 到 12 以 6 为步长计数的列表,因为我们将步长键入为负数:

# seq 24 -6 12
[root@localhost ~]# seq 24 -6 12
24
18
12

在这里插入图片描述

4、Counting With Decimals

用小数计数

开始、结束和步数也可以是小数。如果任何数字是小数,则其他数字也被视为小数。以下命令生成步长为 0.2 的数字列表:

# seq 1 0.2 2
[root@localhost ~]# seq 1 0.2 2
1.0
1.2
1.4
1.6
1.8
2.0

在这里插入图片描述

5、The Speed of seq

seq的速度
seq速度非常快——唯一的瓶颈是在终端窗口中输入命令所花费的时间。为了测试它的速度,让我们请求一个包含 250,000 个数字的列表。

# time seq 250000

结果显示在列表下方。即使在我们中等功率的测试 PC 上,seq速度也快得惊人
在这里插入图片描述

整个列表在大约 1/3 秒内创建并写入屏幕。如果我们将列表重定向到一个文件中,我们甚至可以避免在终端窗口中输入的开销。

为此,我们键入以下内容:

# time seq 250000 > numbers.txt
[root@localhost /]# time seq 250000 > numbers.txt

real    0m0.007s
user    0m0.003s
sys     0m0.004s

在这里插入图片描述

6、Using a Separator

使用分隔符

换行符是列表中每个数字之间显示的默认字符。这就是为什么它们以垂直列表的形式出现,每个数字单独一行。如果需要,可以提供另一个分隔符。

例如,假设需要创建一个逗号分隔的列表、一个由冒号分隔的列表或任何其他标点符号或符号。分隔符实际上是一个字符串,因此可以使用多个字符。

<1> 我们将使用-s(分隔符)选项。以下命令将生成一个逗号分隔的列表:

[root@localhost /]# seq -s, 6 6 36
6,12,18,24,30,36

<2> 此命令将使用冒号 ( 😃 作为分隔符:

[root@localhost /]# seq -s: 6 6 36
6:12:18:24:30:36

<3> 此命令告诉seq使用两个连字符 ( -) 作为分隔符:

[root@localhost /]# seq -s-- 6 6 36
6--12--18--24--30--36

在这里插入图片描述
<4> 指定分隔符 横着输出

[root@localhost /]# seq -s '#' 5
1#2#3#4#5

在这里插入图片描述

7、Using Format Strings

该seq命令还支持C 语言风格的格式字符串。这些允许您格式化输出,而不仅仅是指定分隔符。要使用格式字符串,请使用-f(format) 选项。

<1> 以下命令告诉seq使用零将输出填充为两个字符(%2g 表示宽度为2,不足用0补足):

# seq -f "%02g" 6
[root@localhost /]# seq -f "%02g" 6
01
02
03
04
05
06

在这里插入图片描述

<2> 可以用我们喜欢的任何文本格式化字符串,并将数字放在字符串中的任何位置,如下所示:

# seq -f "Number %02g in a C-like format string" 6
[root@localhost /]# seq -f "Number %02g in a C-like format string" 6
Number 01 in a C-like format string
Number 02 in a C-like format string
Number 03 in a C-like format string
Number 04 in a C-like format string
Number 05 in a C-like format string
Number 06 in a C-like format string

在这里插入图片描述

8、A Quick Way to Set Zero Padding

设置零填充的快速方法

设置零填充的最快方法是使用 -w(equal width) 选项。这告诉seq使用零来填充数字,因此它们的宽度都与最大数字相同。

以下命令以 100 为步长从 0 计数到 1,000,并且所有数字都将用零填充:

最长的数字需要四个字符,因此所有较窄的数字都用零填充到该宽度(即使 0 也填充到四个零)。

# seq -w 0 100 1000
[root@localhost /]# seq -w 0 100 1000
0000
0100
0200
0300
0400
0500
0600
0700
0800
0900
1000

在这里插入图片描述

9、Piping seq Into bc

将 seq 导入 bc

通过将分隔符设置为数学符号并将列表传递到bc命令中,我们可以评估该列表中的数字。

以下命令生成由星号 ( ) 分隔的数字列表*,从 1 开始,以 6 结尾:

[root@localhost /]# seq -s* 6
1*2*3*4*5*6

如果我们将该列表输入,它会使用星号 ( ) 作为乘法符号bc来评估该列表:*

[root@localhost /]# seq -s* 6 | bc
720

我们也可以用其他符号来做到这一点。下面的命令使用加号 ( +) 创建一个列表,其中添加了所有数字:

[root@localhost /]# seq -s+ 5
1+2+3+4+5

我们键入以下内容以将其输入bc 并评估列表:

[root@localhost /]# seq -s+ 5 | bc
15

在这里插入图片描述

10、Creating Files With seq

使用 seq 创建文件
该touch命令 更新文件上的时间和日期戳。如果文件不存在,touch 会创建它。我们可以使用命令行扩展touch和seq来创建主题命名但编号不同的文件的集合。

我们将创建一组 10 个具有相同基本名称和不同编号的文件(file-1.txt、file-2.txt 等)。我们输入以下内容:

touch $(seq -f "file-%g.txt" 1 10)
[root@localhost seq]# touch $(seq -f "file-%g.txt" 1 10)
[root@localhost seq]# ll
总用量 0
-rw-r--r-- 1 root root 0 930 11:09 file-10.txt
-rw-r--r-- 1 root root 0 930 11:09 file-1.txt
-rw-r--r-- 1 root root 0 930 11:09 file-2.txt
-rw-r--r-- 1 root root 0 930 11:09 file-3.txt
-rw-r--r-- 1 root root 0 930 11:09 file-4.txt
-rw-r--r-- 1 root root 0 930 11:09 file-5.txt
-rw-r--r-- 1 root root 0 930 11:09 file-6.txt
-rw-r--r-- 1 root root 0 930 11:09 file-7.txt
-rw-r--r-- 1 root root 0 930 11:09 file-8.txt
-rw-r--r-- 1 root root 0 930 11:09 file-9.txt

11、Using seq in Bash Loops

在 Bash 循环中使用 seq

我们可以seq在 Bash 脚本中使用小数来控制循环。

在编辑器中输入以下文本,然后将其保存为“loops.sh”

#!/bin/bash 

  for val in $(seq 5 0.2 6.6); do 

  echo "The value is now: $val" 

done

在这里插入图片描述

接下来,我们键入以下内容以使我们的新脚本可执行:

chmod +x loop.sh

当我们运行脚本时,循环计数器会打印在终端窗口中。然后我们可以输入以下内容来查看十进制循环计数器随着循环的每次迭代而增加:

./loop.sh

在这里插入图片描述

Copyright © 2010-2022 mfbz.cn 版权所有 |关于我们| 联系方式|豫ICP备15888888号