有时候可能有这样的需要:用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序列生成的更多相关文章

  1. 利用python和shell脚本生成train.txt的标签文件

    1. 用shell脚本生成带绝对路径的train.txt 例如我要生成如下形式的带标签的文件,如图:(如有两个标签:0 和 1) shell脚本如下: 这样标签0写入了train.txt # /usr ...

  2. [DeeplearningAI笔记]序列模型1.5-1.6不同类型的循环神经网络/语言模型与序列生成

    5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.5不同类型的循环神经网络 上节中介绍的是 具有相同长度输入序列和输出序列的循环神经网络,但是对于很多应用\(T_{x}和 ...

  3. 使用shell脚本生成数据库markdown文档

    学习shell脚本编程的一次实践,通过shell脚本生成数据库的markdown文档,代码如下: HOST=xxxxxx PORT=xxxx USER="xxxxx" PASSWO ...

  4. 【Python图像特征的音乐序列生成】关于数据集的分享和样例数据

    数据集还在制作中,样例数据如下: 我将一条数据作为一行,X是ID,O代表了情感向量,S是速度,是一个很关键的参数,K是调式,M是节拍,L是基本拍.后面是ABC格式的序列,通过embedding化这些音 ...

  5. 【Python图像特征的音乐序列生成】使用Python生成简单的MIDI文件

    这个全新的Python音乐创作系列,将会不定期更新.写作这个系列的初衷,是为了做一个项目<基于图像特征的音乐序列生成模型>,实时地提取照片特征,进行神经网络处理,生成一段音乐. 千里之行, ...

  6. shell 编程生成日期文件;Server虚拟机上进行Web服务器配置

    shell 编程生成日期文件 1. 请编写一个脚本,命名为sh01.sh,其功能是: 键盘输入文件名(要求使用名字全拼作为文件名). 自动创建3个文件. 1个为系统当天日期(CCYYMMDD). 1个 ...

  7. Java 通过先序后序序列生成二叉树

    题目 二叉树的前序以及后续序列,以空格间隔每个元素,重构二叉树,最后输出二叉树的三种遍历方式的序列以验证. 输入: 1 2 3 4 5 6 7 8 9 10 3 2 5 4 1 7 8 6 10 9 ...

  8. shell随机生成身份证,姓名,电话,日期,分数,等级和insert语句

    #!/bin/bash#生成随机身份证号,性别,年龄,电话,姓名,日期,分数和对应等级,并生成insert语句#作者AiYS,2018-02-06,转载请注明http://www.cnblogs.co ...

  9. Shell脚本生成网页版相册浏览器

    今天学到了一招,那就是使用脚本制作一款网页版相册浏览器.先上图吧. 必备基础 操作系统: 以linux为内核的操作系统都行 编程语言:Shell(bash)脚本,相关基础知识即可 下载工具:wget ...

随机推荐

  1. lr常见问题汇总(持续更新版)

    在使用mms协议的时候,会碰到报错 Action.c(): 错误: C 解释器运行时错误: Action.c (): Error -- Unresolved symbol : mms_play. 解决 ...

  2. 性能分析_linux服务器CPU_中断

    中断 1.  指标范围 1.1  Interrupt rate 应该与cpu利用率结合分析,如果cpu利用率在合理范围内,大量的中断也是可以接受的.一个巨大的中断值,同时伴随着缓慢的系统性能表现,指示 ...

  3. 实现LinearLayout(垂直布局,Gravity内容排布)

    首先上Gravity的代码,Android原版的Gravity搞得挺复杂的,太高端了.但基本思路是使用位运算来做常量,我就自己消化了一些,按自己的思路来实现. 先上代码,在做分析. package k ...

  4. Java多线程之ThreadLocal总结

    原贴地址:http://www.cnblogs.com/zhengbin/p/5674638.html 阅读目录 官方对ThreadLocal的描述: <Thinking in Java> ...

  5. 修改pip源到国内的镜像源

    国内网络原因,经常无法访问一些技术网站,pypi.python.org就是其中一个.所以,使用pip给Python安装软件时,经常出现错误.like this: File "/usr/lib ...

  6. idea建立web项目servlet映射的地址/jsp访问不到

    用IntelliJ IDEA 2017新建了一个web项目,成功运行后servlet mapping的地址一直访问不到 原因:在配置tomcat的时候Server中Open browser选项勾选之后 ...

  7. 【刷题】BZOJ 1070 [SCOI2007]修车

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...

  8. 少年,想学带修改主席树吗 | BZOJ1901 带修改区间第k小

    少年,想学带修改主席树吗 | BZOJ1901 带修改区间第k小 有一道题(BZOJ 1901)是这样的:n个数,m个询问,询问有两种:修改某个数/询问区间第k小. 不带修改的区间第k小用主席树很好写 ...

  9. 51nod 1471 小S的兴趣 | 分块 链表

    51nod 1471 小S的兴趣 题面 小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题. 有一个包含n个正整数的数组a和针对这个数组的几个问题.这些问题 ...

  10. codevs1839洞穴勘测

    题目链接:http://codevs.cn/problem/1839/ 题目描述 Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉 ...