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 ...
随机推荐
- HBase 架构与工作原理5 - Region 的部分特性
本文系转载,如有侵权,请联系我:likui0913@gmail.com Region Region 是表格可用性和分布的基本元素,由列族(Column Family)构成的 Store 组成.对象的层 ...
- mongodb 下载安装 转
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...
- [cnbeta] 波音系列飞机价格。。。
https://www.cnbeta.com/articles/tech/786745.htm 单价最便宜的是波音737-700,为0.858亿美元(约合5.96亿元). 评论网友调侃,“你家能满40 ...
- SQL语句查询一个数据库中的所有表
--读取库中的所有表名 select name from sysobjects where xtype='u' --读取指定表的所有列名 select name from syscolumns whe ...
- 【Linux】Linux定时任务Crontab命令详解
linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另 外, 由于使用者自己也可以设置计划任务,所以, ...
- InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder_1' with dtype float and shape [?,10]
在莫烦Python教程的“Dropout 解决 overfitting”一节中,出现错误如下: InvalidArgumentError: You must feed a value for plac ...
- 【BZOJ2961】共点圆(CDQ分治)
[BZOJ2961]共点圆(CDQ分治) 题面 BZOJ 题解 设询问点\((x,y)\),圆心是\((X,Y)\) 那么如果点在园内的话就需要满足 \((X-x)^2+(Y-y)^2\le X^2+ ...
- 【BZOJ1046】上升序列(动态规划,贪心)
[BZOJ1046]上升序列(动态规划,贪心) 题面 BZOJ 洛谷 题解 我一开始看错题了,一度以为是字典序最小的序列. 最后发现它要求的字典序是位置的字典序最小. 那就很好办了. 设\(f[i]\ ...
- 【转】arm-none-linux-gnueabi-gcc下载
arm-none-linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具.可用于交叉编译ARM系统中所有环节的代码,包括 ...
- 洛谷 P1446 [HNOI2008]Cards 解题报告
P1446 [HNOI2008]Cards 题目描述 小春现在很清闲,面对书桌上的\(N\)张牌,他决定给每张染色,目前小春只有\(3\)种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun ...