Linux基础命令-seq打印数字序列

Linux基础命令-sed流编辑器

前言

seq命令通常是用来打印一串有规律的数字,常与其他命令搭配使用,一起来看下它的用法。

一. 命令介绍

在doc文档中查看seq命令的含义

NAME
       seq - print a sequence of numbers
DESCRIPTION
       Print numbers from FIRST to LAST, in steps of INCREMENT.

       Mandatory arguments to long options are mandatory for short options too.

seq命令用来打印数字序列,用以指定增量从首数开始打印数字到尾数,即产生从某个数到另外一个数之间的所有整数,并可以对整数的格式,宽度,分隔符号进行控制。

二. 语法格式

seq的语法格式是seq 【参数】数值

SYNOPSIS
       seq [OPTION]... LAST
       seq [OPTION]... FIRST LAST
       seq [OPTION]... FIRST INCREMENT LAST

三 . 常用参数

在文档中查看有这几个参数,并且这几个参数都是较为常用的,像help,version参数每个命令都会有的,这里就不列出具体含义了,实际上就是查看帮助信息以及版本等内容。

       -f, --format=FORMAT
              use printf style floating-point FORMAT

       -s, --separator=STRING
              use STRING to separate numbers (default: \n)

       -w, --equal-width
              equalize width by padding with leading zeroes

       --help display this help and exit

       --version
              output version information and exit
命令选项 含义
-f 使用printf的浮点格式
-s 使用字符串分隔数字 不指定默认是换行符
-w 通过用前导0来均衡宽度

这里提到了printf的浮点格式,实际上浮点数有三种格式,分别是%e、%f、%g。

%e 是以科学计数法表示,小数点左边只有一位,小数点右边默认保留6位,再小数后面是符号e,就是整数的10的多少次幂。

举个例子就明白了,有一个数是123456,那么以科学计数法的方式计算,它的写法是:

123456== 1.23456 * 10^5 == 1.23456e5   

%f要求小数点右边保留6位小数

例如有个值是3.14,%f默认保留6位小数,若小数不够,则补0

3.14 = 3.140000

%f也可以只保留两位小数,需要给它指定保留多少位小数
%0.2f表示保留2位小数,当然也可以这样写 %.2f,不加上小数点前面的0

%g 在数字很大或很小时会自动以指数形式表示,比较灵活,可读性比较强,一般用于整数。

seq -s ' '  -f '%02g' 1 10
01 02 03 04 05 06 07 08 09 10

四. 参考实例

4.1 打印整数

在seq后的一个数值就是打印某个数以内的所有整数值

[root@VM-12-17-centos ~]# seq 10
1
2
3
4
5
6
7
8
9
10

有两个数值就是从first到last之间的整数

[root@VM-12-17-centos ~]# seq 15 20
15
16
17
18
19
20

现在的格式都是竖着显示,这样看着占用屏幕比较大,还记得为什么会竖着打印吗,-s默认是\n换行符进行分隔的,使用-s参数指定分隔符即可。

[root@VM-12-17-centos ~]# seq -s ' ' 1 100 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

4.2 使用seq搭配其他命令使用

例如我们要创建10个目录文件,可以使用seq命令结合mkdir一起来使用

[root@VM-12-17-centos 2023-04-13]# seq -f 'dir%02g' 1 10 | xargs mkdir
[root@VM-12-17-centos 2023-04-13]# ls
dir01  dir02  dir03  dir04  dir05  dir06  dir07  dir08  dir09  dir10

这样10个目录文件都创建好了;
以上效果还可以用脚本来实现

[root@VM-12-17-centos 2023-04-13]# for i in `seq -f 'dir%02g' 11 20`;do mkdir /root/2023-04-13/$i;done
[root@VM-12-17-centos 2023-04-13]# ls
dir01  dir03  dir05  dir07  dir09  dir11  dir13  dir15  dir17  dir19
dir02  dir04  dir06  dir08  dir10  dir12  dir14  dir16  dir18  dir20

结果是一样的,因此在shell中,要实现某一种结果,可以有很多种方法。

4.3 seq的-w参数如何使用

-w参数在文档中查看还是很难明白它的意思,上手练习一下就会发现-w主要让每个数的宽度都达到一致。
如果是1-9的话,那使用-w参数没有什么区别

[root@VM-12-17-centos 2023-04-13]# seq -s ' ' 1 9
1 2 3 4 5 6 7 8 9
[root@VM-12-17-centos 2023-04-13]# seq -s ' ' -w 1 9
1 2 3 4 5 6 7 8 9

当打印的值有一个数有2位时,会将其他数也自动调整成两位,在值前面补上0,以确保每个值的宽度都是2位。

[root@VM-12-17-centos 2023-04-13]# seq -s ' ' 1 10 
1 2 3 4 5 6 7 8 9 10
[root@VM-12-17-centos 2023-04-13]# seq -s ' ' -w 1 10 
01 02 03 04 05 06 07 08 09 10

总结

seq命令是比较常用的一个命令,用来打印一串有顺序的数值内容,若觉得以上内容还行的,可以点赞支持一下!
Linux基础命令-seq打印数字序列_第1张图片

你可能感兴趣的:(基础命令,linux,运维,服务器)