Linux shell编程学习笔记35:seq

0 前言

在使用 for 循环语句时,我们经常使用到序列。比如:

for i in 1 2 3 4 5 6 7 8 9 10; do echo "$i * 2 = $(expr $i \* 2)";  done

其中的 1 2 3 4 5 6 7 8 9 10;就是一个整数序列 。

为了方便我们使用数字序列,Linux提供了seq命令,这个命令是取自单词sequence的前3个字母。比如:

for i in $(seq 1 10) ; do

 更多信息请回顾:

Linux shell编程学习笔记17:for循环语句-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Purpleendurer/article/details/134102934?spm=1001.2014.3001.5501

其实,seq命令的用途和使用环境很广阔。现在我们就来探究一下。

1 seq命令的格式、功能

我们可以使用命令 seq --help  来查看seq命令的帮助信息:

purpleEndurer @ bash ~ $ seq --help
Usage: seq [OPTION]... LAST
  or:  seq [OPTION]... FIRST LAST
  or:  seq [OPTION]... FIRST INCREMENT LAST
Print numbers from FIRST to LAST, in steps of INCREMENT.

Mandatory arguments to long options are mandatory for short options too.
  -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

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 argument 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.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report seq translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'seq invocation'
purpleEndurer @ bash ~ $ 

1.1 seq 命令的格式

seq [选项]... [序列起始数] [步长] 序列结尾数

1.1.1 参数:

  • 序列起始数:可以是0、正整数 或 负整数,未指定时默认为1
  • 序列结尾数:可以是0、正整数 或 负整数
  • 步长           :可以是 正整数 或 负整数,未指定时默认为1

1.1.2 选项:

选项说明备注

-f格式字符串

-f 格式字符串

-f=格式字符串

--format=FORMAT
--format FORMAT

使用printf命令中的格式字符串来格式化输出,默认为%g

数字位数不足部分默认是空格

不能与 -w 或 --equal-width 同时使用

format

-s分隔字符串

-s 分隔字符串

-s=分隔字符串

--separator 分隔字符串

--separator=分隔字符串

使用指定的字符串作为数字间的分隔符(默认字符串是:\n)

指定作分隔符的字符串可以是空字符串,也可以1位字符,或者多位字符

separator

-w 

--equal-width

通过用前导零填充来均衡宽度

不能与 -f 或 --format 同时使用

width
--help显示帮助信息并退出help
--version输出版本信息并退出version

1.2 seq命令的功能

生成以超始数开始,逐一加上步长,直到结尾数的数列并以指定的格式输出。

2 seq 命令用法实例

2.1 seq不带参数会报错,返加值为1

purpleEndurer @ bash ~ $ seq
seq: missing operand
Try 'seq --help' for more information.
purpleEndurer @ bash ~ $ echo $?
1
purpleEndurer @ bash ~ $ 

2.2 生成递增序列

例 2.2 生成从1开始,步长为1,到10为止的序列

完整的命令是:seq 1 1 10

purpleEndurer @ bash ~ $ seq 1 1 10
1
2
3
4
5
6
7
8
9
10
purpleEndurer @ bash ~ $ 

由于seq的 步长未指定时默认为1,所以我们可以将命令中代表步长的第二个1省略,从而简写为:seq 1 10

purpleEndurer @ bash ~ $ seq 1 10
1
2
3
4
5
6
7
8
9
10
purpleEndurer @ bash ~ $ 

由于seq的 序列起始数未指定时默认为1,所以我们可以将命令中的第一个1省略,进一步简写为:seq 10

purpleEndurer @ bash ~ $ seq 10
1
2
3
4
5
6
7
8
9
10
purpleEndurer @ bash ~ $ 

2.3 生成递减序列

例 2.3 生成从10开始,步长为-2,到-10为止的序列

完整的命令是:seq 10 -2 -10

purpleEndurer @ bash ~ $ seq 10 -2 -10
10
8
6
4
2
0
-2
-4
-6
-8
-10
purpleEndurer @ bash ~ $ 

 

2.4 指定格式字符串

2.4.1 系统默认为%g

purpleEndurer @ bash ~ $ seq -f '%g' 10 -2 -10
10
8
6
4
2
0
-2
-4
-6
-8
-10
purpleEndurer @ bash ~ $

可以看到,当我们指定格式字符串为%g时,显示结果与不指定是一样的。

2.4.2  自定义格式字符串

例如我们指定以>开头,宽度为5来显示

以下命令均可以实现:

  • seq -f=">%5g" 10 -2 -10
  • seq -f">%5g" 10 -2 -10
  • seq -f ">%5g" 10 -2 -10
  • seq --format=">%5g" 10 -2 -10
  • seq --format ">%5g" 10 -2 -10
     

purpleEndurer @ bash ~ $ seq -f '>%5g' 10 -2 -10
>   10
>    8
>    6
>    4
>    2
>    0
>   -2
>   -4
>   -6
>   -8
>  -10
purpleEndurer @ bash ~ $ seq -f ">%5g" 10 -2 -10
>   10
>    8
>    6
>    4
>    2
>    0
>   -2
>   -4
>   -6
>   -8
>  -10
purpleEndurer @ bash ~ $ seq --format=">%5g" 10 -2 -10
>   10
>    8
>    6
>    4
>    2
>    0
>   -2
>   -4
>   -6
>   -8
>  -10
purpleEndurer @ bash ~ $ seq --format ">%5g" 10 -2 -10
>   10
>    8
>    6
>    4
>    2
>    0
>   -2
>   -4
>   -6
>   -8
>  -10
purpleEndurer @ bash ~ $ 

可以看到,seq命令默认是用空格来补位,如果我们想用0来补位,可以使用命令:

seq -f">%05g" 10 -2 -10

purpleEndurer @ bash ~ $ seq -f">%05g" 10 -2 -10
>00010
>00008
>00006
>00004
>00002
>00000
>-0002
>-0004
>-0006
>-0008
>-0010
purpleEndurer @ bash ~ $

2.5 使用-w选项平衡宽度(不足时用0填充)

purpleEndurer @ bash ~ $ seq -w 10 -2 -10
010
008
006
004
002
000
-02
-04
-06
-08
-10
purpleEndurer @ bash ~ $ 

虽然 -w 和 -f"%5g"都是以0来填充空位的,但是对比二者的显示结果,可以发现二者存在一定的区别:

  • -w是以生成的序列中位数最长的位数(包括负号-)为最大位数

例如在命令 seq -w 10 -2 -10  中,生成的序列中 位数最长的是-10,即3位数,所以生成序列均为3位数。

  • -f选项可以直接指定位数

例如在命令 seq -f">%05g" 10 -2 -10 中,生成的序列中 位数最长的是-10,即3位数,但由于我们指定宽度为5,所以显示的序列均为5位数。

2.6 指定序列分隔符

seq命令默认序列分隔符为换行符\n,我们可能使用-s或--separator指定其它分隔符,指定的分隔符字符串可以是空字符串,也可以1位字符,或者多位字符。

例如,生成从10开始,步长为-2,到-10为止的序列,以两个冒号作为分隔符

使用命令都可以实现:

  • seq -s '::' 10 -2 -10
  • seq -s'::' 10 -2 -10
  • seq -s='::' 10 -2 -10
  • seq --separator '::' 10 -2 -10
  • seq --separator='::' 10 -2 -10

purpleEndurer @ bash ~ $ seq -s '::' 10 -2 -10
10::8::6::4::2::0::-2::-4::-6::-8::-10
purpleEndurer @ bash ~ $ seq --separator '::' 10 -2 -10
10::8::6::4::2::0::-2::-4::-6::-8::-10
purpleEndurer @ bash ~ $ seq --separator='::' 10 -2 -10
10::8::6::4::2::0::-2::-4::-6::-8::-10
purpleEndurer @ bash ~ $ seq -s='::' 10 -2 -10
10=::8=::6=::4=::2=::0=::-2=::-4=::-6=::-8=::-10
purpleEndurer @ bash ~ $ 

我们也可以使用空字符串作为分隔符

purpleEndurer @ bash ~ $ seq --separator '' 10 -2 -10
1086420-2-4-6-8-10
purpleEndurer @ bash ~ $ 

3 seq 命令的类型 (is hashed?)

Linux shell编程学习笔记33:type 命令-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Purpleendurer/article/details/134804451?spm=1001.2014.3001.5501中,我们知道type命令 可以显示指定命令的信息,判断给出的指令是内部命令、外部命令(文件)、别名、函数、保留字 或者 不存在(找不到)。

但对于seq命令,type命令显示的是 “seq is hashed (/usr/bin/seq)”

purpleEndurer @ bash ~ $ type seq
seq is hashed (/usr/bin/seq)
purpleEndurer @ bash ~ $ 

这是什么意思呢?

bing了一下,在bash - What does "is hashed" mean when using the type command? - Unix & Linux Stack Exchangeicon-default.png?t=N7T8https://unix.stackexchange.com/questions/251731/what-does-is-hashed-mean-when-using-the-type-command

给出的解释是:

What that means is that after finding the location of a command the first time (or when hash is invoked), its location is remembered (hashed).

翻译过来就是:

这意味着,在第一次找到命令的位置(或调用哈希时)后,会记住它的位置(散列)。

我们可以通过下面的命令序列来理解:

 purpleEndurer @ bash ~ $ type seq
seq is /usr/bin/seq
purpleEndurer @ bash ~ $ seq
seq: missing operand
Try 'seq --help' for more information.
purpleEndurer @ bash ~ $ type seq
seq is hashed (/usr/bin/seq)
purpleEndurer @ bash ~ $ 

当我们登录系统后,还没有执行seq命令时,使用type seq命令,命令显示的信息是:seq is /usr/bin/seq

说明它是个外部命令。

当我们执行seq命令后,再使用type seq命令,命令显示的信息是:seq is hashed (/usr/bin/seq)

即此时系统已记住了seq命令的位置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/218363.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解Socket

前言 我在去年就学习过Java中Socket的使用&#xff0c;但对于Socket的理解一直都是迷迷糊糊的。看了网上很多关于Socket的介绍&#xff0c;看完还是不太理解到底什么是Socket&#xff0c;还是很迷。直到最近在学习计算机网络&#xff0c;我才对Socket有了一个更深地理解。之前一…

5. PyTorch——数据处理模块

1.数据加载 在PyTorch中&#xff0c;数据加载可通过自定义的数据集对象。数据集对象被抽象为Dataset类&#xff0c;实现自定义的数据集需要继承Dataset&#xff0c;并实现两个Python魔法方法&#xff1a; __getitem__&#xff1a;返回一条数据&#xff0c;或一个样本。obj[in…

uniapp框架——初始化vue3项目(搭建ai项目第一步)

文章目录 ⭐前言&#x1f496; 小程序系列文章 ⭐uniapp创建项目&#x1f496; 初始化项目&#x1f496; uni实例生命周期&#x1f496; 组件生命周期&#x1f496; 页面调用&#x1f496; 页面通讯&#x1f496; 路由 ⭐搭建首页⭐form表单校验页面⭐总结⭐结束 ⭐前言 大家好…

以pycharm为例,生成Python项目所需要的依赖库/包文档:requirements.txt

平时我们在编写或者使用别人的Python项目时&#xff0c;往往会看到一个文档requirements.txt&#xff0c;该文档是描述一个Python项目中的第三方库的名称以及版本。本文介绍导出python当前项目依赖包requirements.txt的操作步骤。 方法一&#xff1a;如果每个项目有对应的虚拟…

【SpringBoot】配置文件

配置文件官网 1. 配置方式 application.propertiesapplication.yml / application.yaml 2. 自定义配置信息 将实体类中的本应该写死的信息写在属性配置文件中。 可以使用 Value("${键名}") 获取&#xff0c;也可以使用 ConfigurationProperties(prefix"前…

java SSM酒店客房管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM酒店客房管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

LAMP平台——构建PHP运行环境

在构建LAMP平台时&#xff0c;各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和 MySQL的安装并没有严格的顺序&#xff1b;而PHP环境的安装一般放到最后&#xff0c;负责沟通Web服务器和数据库 系统以协同工作。 PHP 即 Hypertext Preprocessor&#xff08;超级…

python 爬虫 m3u8 视频文件 加密解密 整合mp4

文章目录 一、完整代码二、视频分析1. 认识m3u8文件2. 获取密钥&#xff0c;构建解密器3. 下载ts文件4. 合并ts文件为mp4 三、总结 一、完整代码 完整代码如下&#xff1a; import requests from multiprocessing import Pool import re import os from tqdm import tqdm fro…

深度探索Linux操作系统 —— 构建根文件系统

系列文章目录 深度探索Linux操作系统 —— 编译过程分析 深度探索Linux操作系统 —— 构建工具链 深度探索Linux操作系统 —— 构建内核 深度探索Linux操作系统 —— 构建initramfs 深度探索Linux操作系统 —— 从内核空间到用户空间 深度探索Linux操作系统 —— 构建根文件系统…

媒体直播平台有哪些,活动直播如何扩大曝光?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体直播平台包括人民视频、新华社现场云、中国网、新浪新闻直播、搜狐视频直播、凤凰新闻直播、腾讯新闻直播等。活动直播想要扩大曝光&#xff0c;可以考虑以下方式&#xff1a; 1.选择…

海思平台isp之ccm标定

文章目录 1、raw图采集2、ccm标定2.1、标定参数配置2.2、标定效果优化2.2.1、优化方式一2.2.2、优化方式二2.2.3、优化方式三1、raw图采集 raw图采集步骤及标准,请参考文章 《海思平台isp之ccm标定》。2、ccm标定 2.1、标定参数配置 (1)图像基本参数 (2)黑电平设置 (…

spring boot 实现直播聊天室

spring boot 实现直播聊天室 技术方案: spring bootwebsocketrabbitmq 使用 rabbitmq 提高系统吞吐量 引入依赖 <dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.42&…

十六、YARN和MapReduce配置

1、部署前提 &#xff08;1&#xff09;配置前提 已经配置好Hadoop集群。 配置内容&#xff1a; &#xff08;2&#xff09;部署说明 &#xff08;3&#xff09;集群规划 2、修改配置文件 MapReduce &#xff08;1&#xff09;修改mapred-env.sh配置文件 export JAVA_HOM…

从零开始:前端架构师的基础建设和架构设计之路

文章目录 一、引言二、前端架构师的职责三、基础建设四、架构设计思想五、总结《前端架构师&#xff1a;基础建设与架构设计思想》编辑推荐内容简介作者简介目录获取方式 一、引言 在现代软件开发中&#xff0c;前端开发已经成为了一个不可或缺的部分。随着互联网的普及和移动…

智能科技企业网站搭建的作用是什么

随着科学技术快速提升&#xff0c;各种智能产品随之而来&#xff0c;每个赛道里都涌入了大量企业商家&#xff0c;有些热门产品更是广受关注&#xff0c;对企业来说&#xff0c;形象、品牌、信息等方面需要完美呈现到用户眼前&#xff0c;而网站无疑是很好的工具。 企业通过【…

打开软木塞,我们来谈谈葡萄酒泡泡吧

香槟是任何庆祝场合的最佳搭配。从婚礼和生日到单身派对和典型的周五晚上&#xff0c;这款气泡饮料是生活中特别聚会的受欢迎伴侣。 来自云仓酒庄品牌雷盛红酒分享你知道吗&#xff0c;你喜欢喝的那瓶香槟酒可能根本不是香槟&#xff0c;而是汽酒&#xff1f;你不是唯一一个认…

造型精致的冰精灵充电头,充电效率高安全可靠,居家出行皆可用

随着大家对手机的依赖度越来越高&#xff0c;快速充电已经成为必不可少的需求。快充当然少不了支持快充的充电器&#xff0c;现在市面上的快充头很多&#xff0c;安全性和便携性是我们选择时的重点关注方向&#xff0c;我目前用的是战飞ZEFi冰精灵&#xff0c;这款产品有着独特…

【LeetCode刷题】-- 161.相隔为1的编辑距离

161.相隔为1的编辑距离 方法&#xff1a;一次遍历 首先&#xff0c;我们要确认字符串的长度不会相差太远。如果长度差了2个或更多字符&#xff0c;那么 s 和 t 就不可能是一次编辑之差的字符串。 接下来&#xff0c;我们假设 s 的长度总是短于或等于 t 的长度。如果不是这样&…

【C语言】结构体内存对齐

目录 引入结构体 结构的声明 创建和初始化 内部元素的使用&#xff1b; 特殊声明&#xff1a; 结构体在内存中的对齐 练习&#xff1a; 引入结构体 C语言有各种数据类型&#xff0c;我们已经对一些数据类型很熟悉&#xff1a; 整型&#xff08;int&#xff09;- 存储整…

MAC IDEA Maven Springboot

在mac中&#xff0c;使用idea进行maven项目构建 环境配置如何运行maven项目1.直接在IDEA中运行2.使用jar打包后执行 如何搭建spring boot1.添加依赖2.创建入口类3.创建控制器4. 运行5.其他 环境配置 官网安装IDEA使用IDEA的创建新项目选择创建MAEVEN项目测试IDEA的MAVEN路径是…