seq与Shell序列生成
有时候可能有这样的需要:用Shell生成类似0001这样的序列作为批次号,这里整理了一下个人的方法
方法一:通过seq命令
seq命令可以生成从某个数字到递增到另一数字的序列。用法如下:
# seq --help
Usage: seq [选项] 尾数
or: seq [选项] 首数 尾数
or: seq [选项] 首数 增量值 尾数
Print numbers from FIRST to LAST, in steps of INCREMENT.
选项参数如下:
-f, --format=格式 use printf style floating-point FORMAT
-s, --separator=字符串 用指定的字符串分割各序列值,默认分隔符为\n
-w, --equal-width 使各序列值位数宽度相等,位数不够的在前面用0补齐
示例1:指定序列格式
[root@bogon ~]# seq -f '%g' 6 ##没有使用-f指定格式时,默认格式时%g,可以认为%g没有指定任何格式 [root@bogon ~]# seq -f '%3g' 12 ##-f '%3g' 可以直接指定序列的宽度(3位数),这里不足的部分用空格补齐 [root@bogon ~]# seq -f '%03g' ##-f '%03g' 可以指定序列宽度(3位数),不足的部分用0补齐 [root@bogon ~]# seq -f 'tmp_%g' 12 ##%前面也可以根据需要添加字符串,生成具有自己想要的前缀的序列
tmp_7
tmp_9
tmp_11
示例2:指定序列分隔符
[root@bogon ~]# seq -s ,
,,,,
[root@bogon ~]# seq -s "`echo -e "\t"`"
示例3:指定序列宽度,不足的位数用0补齐
[root@bogon ~]# seq -w 10 ##不设置步长 [root@bogon ~]# seq -w 10 ##设置步长
注:-f 可以直接指定序列的宽度,-w是将序列中的最大值的宽度作为序列的宽度;
-f 和 -w 参数不能一起使用;
通过上面的例子可以发现,seq生成序列:简单,能方便的生成序列,且序列的增量步长、序列之间的分隔符都可控,对于同一脚本中生成多个序列号的需求十分有效。
但是在实际中也有不足:若某个脚本要运行多次,若不做处理,批次号的初始值还是原来的初始值。这种情况下,个人的思路是通过已有文件的批次号的第一个非0字符后面的数字取出来,作为新的seq的起始值。
示例示例如下:
##获取本次脚本第几次执行,以生成批次号
if [ ! -f ${SPOOL_DIR}"tmp_"${v_date}"_000001.log" ];then
V_START_NO=
else
V_START_NO=`ls -l ${TEST_DIR} | grep "tmp_"${v_date} | awk '{print substr($9,24,6)}' | sort -n | tail - | sed 's/^0*//'`
V_START_NO=$((V_START_NO+))
fi ##每次操作一个文件
for v_batch_no in `seq -w ${V_START_NO} | head -` ; do
touch "tmp_"${v_batch_no}".log"
done
根据自己实际情况为准,这里的部分内容是自己改过的。
方法二:直接根据已有文件名后缀获取
示例如下:
######生成批次号:6位数字,从000001开始,每次加1########
num=`ls -l ${TMP} | grep TEST_${v_date} | awk '{print substr($9,24,6)}' | sort -n | tail - | sed 's/^0*//'`
if [ ! -f ${TMP}"TEST_"${v_date}"_000001".txt ];then
v_batch_no=""
else
tmp_num=$((num+))
v_batch_no=`printf "%06d\n" ${tmp_num}`
fi
方法三:for遍历指定的字符序列
示例如下:
[root@bogon tmp]# for i in {..};do echo $i;done
003(略)
这种方法也可以生成类似001这种序列号,但是比使用seq还是要差很多的。
本文原始地址:VNX - 博客园 http://www.cnblogs.com/chinas/p/7101887.html,转载请注明出处,谢谢!!!!
seq与Shell序列生成的更多相关文章
- 利用python和shell脚本生成train.txt的标签文件
1. 用shell脚本生成带绝对路径的train.txt 例如我要生成如下形式的带标签的文件,如图:(如有两个标签:0 和 1) shell脚本如下: 这样标签0写入了train.txt # /usr ...
- [DeeplearningAI笔记]序列模型1.5-1.6不同类型的循环神经网络/语言模型与序列生成
5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.5不同类型的循环神经网络 上节中介绍的是 具有相同长度输入序列和输出序列的循环神经网络,但是对于很多应用\(T_{x}和 ...
- 使用shell脚本生成数据库markdown文档
学习shell脚本编程的一次实践,通过shell脚本生成数据库的markdown文档,代码如下: HOST=xxxxxx PORT=xxxx USER="xxxxx" PASSWO ...
- 【Python图像特征的音乐序列生成】关于数据集的分享和样例数据
数据集还在制作中,样例数据如下: 我将一条数据作为一行,X是ID,O代表了情感向量,S是速度,是一个很关键的参数,K是调式,M是节拍,L是基本拍.后面是ABC格式的序列,通过embedding化这些音 ...
- 【Python图像特征的音乐序列生成】使用Python生成简单的MIDI文件
这个全新的Python音乐创作系列,将会不定期更新.写作这个系列的初衷,是为了做一个项目<基于图像特征的音乐序列生成模型>,实时地提取照片特征,进行神经网络处理,生成一段音乐. 千里之行, ...
- shell 编程生成日期文件;Server虚拟机上进行Web服务器配置
shell 编程生成日期文件 1. 请编写一个脚本,命名为sh01.sh,其功能是: 键盘输入文件名(要求使用名字全拼作为文件名). 自动创建3个文件. 1个为系统当天日期(CCYYMMDD). 1个 ...
- Java 通过先序后序序列生成二叉树
题目 二叉树的前序以及后续序列,以空格间隔每个元素,重构二叉树,最后输出二叉树的三种遍历方式的序列以验证. 输入: 1 2 3 4 5 6 7 8 9 10 3 2 5 4 1 7 8 6 10 9 ...
- shell随机生成身份证,姓名,电话,日期,分数,等级和insert语句
#!/bin/bash#生成随机身份证号,性别,年龄,电话,姓名,日期,分数和对应等级,并生成insert语句#作者AiYS,2018-02-06,转载请注明http://www.cnblogs.co ...
- Shell脚本生成网页版相册浏览器
今天学到了一招,那就是使用脚本制作一款网页版相册浏览器.先上图吧. 必备基础 操作系统: 以linux为内核的操作系统都行 编程语言:Shell(bash)脚本,相关基础知识即可 下载工具:wget ...
随机推荐
- [转帖]“剖开” LinuxONE 和 Exadata,架构专家解读里面到底有什么
“剖开” LinuxONE 和 Exadata,架构专家解读里面到底有什么 http://server.zhiding.cn/server/2018/0914/3111044.shtml 说起I ...
- docker-py安装
linux: pip install docker-py
- 字符串(string)与整型(int)、浮点型(float)等之间的转换
#include <stdlib.h> 1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串,下 ...
- BZOJ3142 [Hnoi2013]数列 【组合数学】
题目链接 BZOJ3142 题解 题意:选一个正整数和\(K - 1\)个\([1,M]\)中的数,使得总和小于等于\(N\),求方案数模\(P\) 题目中\(K(M - 1) < N\)的限制 ...
- sqlmap利用DNS进行oob(out of band)注入(转)
0x00 起因 实际案子的时候遇到了一个注入,过狗可以使用sqlmap,但是是基于时间的注入和限制频率需要使用--delay参数,本来就是延时再加上--delay等的心力憔悴.所有有了下面介绍使用 ...
- 设置nginx日志滚动
需求:设置nginx每天凌晨12点轮转,系统版本为debian7,nginx版本为tengine2.2.0 1.修改logrotate主配置文件,打开压缩和以时间为后缀命名 # vim /etc/lo ...
- JS的异步
1.异步 程序中现在运行的部分和将来运行的部分之间的关系是异步编程的核心. 多数JavaScript开发者从来没有认真思考过自己程序中的异步到底是如何出现的,以及为什么会出现,也没有探索过处理异步的其 ...
- Android Log详解(Log.v,Log.d,Log.i,Log.w,Log.e)
1.Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("",""); 2.Log.d的输出颜色是蓝 ...
- bzoj : 4504: K个串 区间修改主席树
4504: K个串 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 268 Solved: 110[Submit][Status][Discuss] ...
- 数据库之MySQL的介绍与使用20180703
/*******************************************************************************************/ 一.mysq ...