vim批量在文件每行添加内容以及查询cloudstack模板是否是增量
一.接着上文(更改cloudstack二级存储),从cloud数据库里查出的所有模板名称以及模板位置语句
SELECT tpl.`name`,img.id, img.`url`,tplref.`install_path` FROM vm_template tpl
JOIN template_store_ref tplref ON tpl.`id` = tplref.`template_id`
JOIN image_store img ON img.id = tplref.`store_id`
WHERE tpl.`removed` IS NULL AND tplref.`install_path` IS NOT NULL AND tpl.`type` = 'USER' AND img.`id` =
ORDER BY img.id ASC
二.需求是,上面语句查到每一个模板的所在路径后,需要判断哪些模板是增量。
1.首先我将查询到的路径内容一键复制到一个文本内。文本内容是类似下面这样的,每行。
template/tmpl/2/211/002c10aa-8fae-3600-ba4b-9f153bc85548.qcow2
template/tmpl/2/213/094f409c-6d2d-3e8b-941a-d0c43b52ea99.qcow2
template/tmpl/2/214/61c8f1e2-930c-3453-a762-0ad15f2d5c30.qcow2
template/tmpl/2/215/182c8801-22fd-3c17-bd50-badec418b241.qcow2
template/tmpl/2/216/e94fac61-5a33-398f-938b-4a6802334418.qcow2
template/tmpl/2/217/0cd01d32-bff2-36ef-9744-1588d74cdf62.qcow2
template/tmpl/2/218/cee86725-8419-3e7d-91eb-d1fa1f2d8540.qcow2
2.检验时可以使用qemu-img info 路径去检验,当返回有backing file 字段信息时,说明它是一个增量。
3.我准备将上面的文本文件修改成一个shell脚本,修改成类似下面这样
qemu-img info template/tmpl/2/211/002c10aa-8fae-3600-ba4b-9f153bc85548.qcow2
qemu-img info template/tmpl/2/213/094f409c-6d2d-3e8b-941a-d0c43b52ea99.qcow2
4.问题又来了,如何在这个文件每一行都追加相同的字符呢,如果一个个追加,那累死了,因为有好几百行,不过搜到了vim里的一个命令
:%s/^/word/g
这个命令就是可以在文件每行的行首添加相同的字符,如果有空格或者其它字符的话,记得使用 \ 符号进行转义。根据上面的要求,现在在文本里使用下面的命令即可
:%s/^/qemu-img\ info\ /g
5.现在文件已经修改好了,改个后缀.sh。然后运行。运行时,需要系统里有qemu-img命令,并且可以连接二级存储,然后记得过滤一下。
6.过滤关键字(backing file),然后显示前第五行,在过滤下image字段,最后输出到文本文件中,如下
bash nfs1.sh | grep -B5 backing | grep image > nfs1.txt
现在就达到一开始的要求,得到那些模板是增量的。
vim批量在文件每行添加内容以及查询cloudstack模板是否是增量的更多相关文章
- 使用Perl批量读取文件最后行
使用Perl批量读取文件最后行 面对成百上千个文件,有时我们需要查看它的最后行,单个文件打开将耗费大量时间,而通过Perl提取出最后行,将快速的帮助我们处理繁琐的事务. 特性 整个目录完全遍历,自动提 ...
- Linux查看文件指定行数内容
1.tail date.log 输出文件末尾的内容,默认10行 tail -20 date.log 输出最后20行的内容 tail -n -20 date ...
- php替换文件指定行的内容
//第一种 利用file 函数 读取文件,每一行都是一个数组元素 $arr = file($file); $arr[$line] = "hello"; file_put_conte ...
- 【Sed】使用sed删除文件指定行的内容
sed多看帮助文档,受益良多 sed -i '$d' filename 例如删除 /etc/profile的最后一行 cat -n /etc/profile ... 101 export PA ...
- perl命令批量替换文件内容
转自:http://www.jbxue.com/article/12638.html 使用perl命令批量替换文件内容. 对linux下的文件内容进行替换,有时不用编写perl脚本,用perl命令就可 ...
- Perl 使用perl命令批量替换文件内容
对linux系统下面多个文本文件内容做处理,是SA经常需要完成的工作.如何高效的完成这个工作,perl应该是一个不错的语言工具.你甚至不需要编写perl脚本,用命令就可以完成上面的工作. perl 命 ...
- python3修改文件指定行
方法可以有三个,但其实是一个方法,因为不同的方法都是文件存储的方法,文件修改就只有一个方法: 将文件导入list后,重新写入文件(另一个文件或者当前文件) 1.当前文件读取后,list修改内容,写入另 ...
- bat批量去除文件首行和合并到文件
bat批量去除文件首行 set n=1 :starline for %%j in (*.txt) do ( :3 if exist D:\work\test\new_%n%.txt (set /a n ...
- windows环境下面批量修改文件夹名称
ren 1 A ren 2 B ren 3 C ren 4 D 电脑桌面新建文档 ---> 批量修改文件夹名称.txt 修改文件名称为:--->批量修改文件夹名称.bat 内容如上: 双击 ...
随机推荐
- open()参数宏的意义 O_TRUNC
C语言中一些基本函数 int _open(char *pathname,int access)为读或写打开一个文件, 按后按access来确定是读文件还是写文件,access值见下表 ┌──────┬ ...
- arduino 编程基础
0. setup() 与 loop() 函数 void setup(): // put your setup code here, to run once: 仅执行一次: void loop(): / ...
- 正确设置Firefox下载文件文件名的方法
不同的浏览器需要特殊设置,主要是火狐比较特殊,火狐可能给文件名加上“%0d%0a"这样的编码字符(换行的意思).不得不佩服网上的高手,这也能解决. [HttpGet] public File ...
- 深度优先搜索入门:POJ1164城堡问题(递归、用栈模拟递归)
将问题的各状态之间的转移关系描述为一个图,则深度优先搜索遍历整个图的框架为:Dfs(v) {if( v 访问过)return;将v标记为访问过;对和v相邻的每个点u: Dfs(u);}int main ...
- HttpClient通信
1.背景 大多数系统功能和代码都是自己写的,自己用,但是在有些情况下,我们可以利用已经存在的系统,完成对自己实现相对很麻烦的功能,这些一般代价相对较大,自己不可能专门写一个系统或者太过很复杂的代码来完 ...
- BZOJ3444 最后的晚餐【细节题+组合数学】*
BZOJ3444 最后的晚餐 Description [问题背景] 高三的学长们就要离开学校,各奔东西了.某班n人在举行最后的离别晚餐时,饭店老板觉得十分纠结.因为有m名学生偷偷找他,要求和自己暗恋的 ...
- BZOJ2038 2009国家集训队 小Z的袜子(hose) 【莫队】
BZOJ2038 2009国家集训队 小Z的袜子(hose) Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼 ...
- 轻量级KVO[译]
在这篇文章中,我会实现一个自己用的简单KVO类,我认为KVO非常棒,然而对于我大部分的使用场景来说,有这两个问题: 1. 我不喜欢在observeValueForKeyPath:ofObjec ...
- JavaScript年月日和时间戳互转
/** 一丶将日期单位转为时间戳 / 毫秒 **/ var str="2017年06月2日" var time = str.replace(/年/i,"-"). ...
- jQuery关于复制(复制隐藏文字+显示文字)跳转,Clipboard
html: (直接上扎实的数据,框子自己搭建) <script type="text/javascript" src="../../js/jquery.min.js ...