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 ...
随机推荐
- MicrosoftFixit50688 [Windows7事件ID10,WMI错误的解决方法
Windows7事件记录中有如下错误提示: "Event filter with query "SELECT * FROM __InstanceModificationEve ...
- 使用pyquery是遇到的一个403的问题
在网上爬虫时,本地windows下运行pyquery代码正常,但是在linux下运行时一直报错 403 Forbidden.刚开始的代码如下 from pyquery import PyQuery a ...
- [Offer收割]编程练习赛23-freeloop
A. H国的身份证号码I dfs裸题. 时间复杂度\(O(n^k)\). #include <bits/stdc++.h> #define FOR(i,a,b) for (int i=a; ...
- 关于OpenGL游戏全屏模式的设置
使用DirectX的API的话可以给游戏窗口设置指定的显示器和全屏独占模式,但是如果使用OpenGL的API就比较遗憾不能直接设置. 以下内容基于Windows系统. 如果使用OpenGL渲染,第一步 ...
- DPM(Deformable Parts Model)
DPM(Deformable Parts Model) Reference: Object detection with discriminatively trained partbased mode ...
- python读取写入内存方法SringIO,BytesIO
python中不仅仅可以在磁盘中写入文件,还允许直接在内存中直接写入数据:需要借助StringIO和BytesIO来实现: 1.直接操作StringIO from io import StringIO ...
- 【ActiveMQ】- 发布/订阅模式
publish/subscribe 特点:A发送的消息可以被所有监听A的对象的接收,就好比学校的广播,所有的学生都可以收听校园广播信息. 消息生产者: package com.zhiwei.advan ...
- 【poj3294】 Life Forms
http://poj.org/problem?id=3294 (题目链接) 题意 给定 n 个字符串,求出现在不小于 k 个字符串中的最长子串. Solution 后缀数组论文题.. 将 n 个字符串 ...
- struts2 的自定义 拦截器
Struts2的 拦截器: 对于拦截器,Struts2官方给出的 定义是: 拦截器是动态拦截Action调用的对象.它提供了一种机制,使开发者可以定义一段代码,在Action执行之前或者之后被调用执行 ...
- 音视频处理之FFmpeg+SDL+MFC视频播放器20180411
一.FFmpeg+SDL+MFC视频播放器 1.MFC知识 1).创建MFC工程的方法 打开VC++ 文件->新建->项目->MFC应用程序 应用程序类型->基于对话框 取消勾 ...