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 ...
随机推荐
- jsp页面has already been called for this response错误解决方法。
创建验证码的jsp页面提示错误:has already been called for this response <%@ page contentType="image/jpeg&q ...
- zoj 2588 Burning Bridges(割边/桥)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1588 题意:Ferry王国有n个岛,m座桥,每个岛都可以互达,现在要 ...
- linux下安装jenkins
我们不用离线安装方式 第一步.必须验证java环境 第二步.我们这里使用yum命令进行在线安装,使用service命令进行启动 1.wget -O /etc/yum.repos.d/jenkins.r ...
- js 添加事件兼容性
var tools = { //添加事件 addHandle: function (e, type, handle) { if (e.addEventListener) { e.addEventLis ...
- 函数防抖与函数节流 封装好的debounce和throttle函数
/** * 空闲控制 返回函数连续调用时,空闲时间必须大于或等于 wait,func 才会执行 * * @param {function} func 传入函数,最后一个参数是额外增加的this对象,. ...
- EF 使用 oracle
EF 使用 oracle https://www.oracle.com/technetwork/topics/dotnet/downloads/index.html C:\Program Files ...
- P4071 [SDOI2016]排列计数
题目描述 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条 ...
- SpringBoot项目部署进阶
一.war包部署 通过“云开发”平台初始化的SpringBoot项目默认采用jar形式打包,这也是我们推荐的方式.但是,因为某些原因,软件需求方特别要求用war形式打包,我们该怎么做? 1.项目尚未开 ...
- 【CF248E】Piglet's Birthday(动态规划)
[CF248E]Piglet's Birthday(动态规划) 题面 洛谷 CodeForces 翻译: 给定\(n\)个货架,初始时每个上面有\(a[i]\)个蜜罐. 有\(q\)次操作,每次操作形 ...
- 【整体二分】【P3834】 【模板】可持久化线段树 1(主席树)
Description 给定一个长度为 \(n\) 的序列, \(m\) 次操作静态查询区间第 \(k\) 大 Input 第一行是 \(n,m\) 下一行描述这个序列 下面 \(m\) 行描述操作 ...