Linux shell 脚本攻略学笔记7
来源:互联网 发布:虚拟机里安装linux 编辑:程序博客网 时间:2024/05/21 17:33
一:临时文件命名与随机数
(1) 创建临时文件
$filename=`mktemp`
上面的代码创建了一个临时文件,并打印出存储在$filename中的文件名
(2)创建临时目录:
$ dirname =`mktemp -d`
上面的代码创建了一个临时目录,并打印出存储在$dirname中的目录名。
(3) 如果仅仅是想生成文件名,又不希望创建实际的文件或目录,方法如下:
$ tmpfile=`mktemp -u`
文件名被存储在$tmpfile中,但并没有创建对应的文件。
(4) 根据模板创建临时文件名:
$mktemp test.XXX
mktemp命令的用法非常简单。他生成一个临时文件并返回其文件名(如果创建的是目录,则返回目录名)。
如果提供了定制模板,X会被随机的字符(字母或数字)替代。注意,mktemp正常工作的前提是保证模板中至少要有3 个x。
二:分割文件和数据
在某些情况下,必须把文件分割成多个更下的片段。我们来看看如何将文件分割成不同大小的多种方法。
例: 假设有一个叫做data.file的测试文件,其大小为100KB。你可以将改文件分割成多个大小为10KB的文件,方法如下:
$ split -b 10k data.file$ lsdata.file xaa xab xac xad xae xaf xag xai xaj上面的命令将data.file分割成多个文件,每一个文件大小为10kb。这些文件以xab,xac, xad的形式命名。这表明他们都有一个字母后缀。如果想以数字为后缀,可以另外使用-d参数。此外,使用-a length可以指定后缀长度:
$ split -b 10k data.file -d -a 4
此外,如果想自己指定前缀,可以在上面这个命令的结尾再加上自己的前缀格式,即可。
$split -b 10k data.file -d -a 4 split_file$ lsdata.file split_file0002 split_file0003 split_file0004 ....
如果不想按照数据块大小,而是需要根据行数来分割文件的话,可以使用-l :
$ split -l 10 data.file# 分割成多个文件,每个文件含10行另一个有趣的工具是csplit。他是能够依据指定的条件和字符串匹配选项对日志文件进行分割。来看看这个工具是如何运作的。
csplit是split工具的一个变体、split只能够根据数据大小或行数分割文件,而csplit可以根据文件自身的特点进行分割。是否存在某个单词或者文本内容都可以作为分割文件的条件。
看一个日志文件的的实例:
我们需要将这个日志文件分割成server01.log, server02.log 和 server03.log,这些文件的内容分别曲子源文件中不同的SERVER部分。那么,可以使用下面的方法来实现:
$ csplit server.log /SERVER/ -n 2 -s {*} -f server -b "%02d.log"; rm server00.log
有关这个命令的详细说明如下。
/SERVER/ 用来匹配某一行,分割过程即从此开始。
/[REGEX]/ 表示文本样式,包括从当前行(第一行)直到(但不包括)包含“SERVER”的匹配行。
{*} 表示根据匹配执行重复分割,直到文件末尾位置。可以用{整数}的形式来制定分割执行的次数。
-s使用命令进入静默模式,不打印其他信息。
-n指定分割后的文件名后缀的数字个数,例如01,02,03等。
-f 指定分割后的文件名前缀(在上面的例子中,server是前缀)。
-b指定后缀格式。例如%02d.log,类似C语言中printf的参数格式。在这里文件名=前缀+后缀=server+%02d.log。
因为分割后的第一个文件没有任何内容(匹配的单词就位于文件中的第一行),所以删除了server00.log
- Linux shell 脚本攻略学笔记7
- Linux shell 脚本攻略 学习笔记-7
- linux shell脚本攻略笔记
- Linux shell脚本攻略-学习笔记(7-9章)
- Linux Shell脚本攻略学习笔记
- Linux Shell 脚本攻略 学习笔记-1
- Linux shell 脚本攻略 学习笔记-2
- Linux shell 脚本攻略 学习笔记-3
- linux shell 脚本攻略 学习笔记-4
- Linux shell 脚本攻略 学习笔记-5
- Linux shell 脚本攻略 学习笔记-6
- Linux shell 脚本攻略 学习笔记-8
- Linux shell 脚本攻略 学习笔记-9
- 《Linux shell脚本攻略》学习笔记
- LINUX SHELL脚本攻略笔记[速查]
- Linux shell 脚本攻略学习笔记1
- Linux shell 脚本攻略学习笔记2
- Linux shell脚本学习攻略笔记3
- 可重入函数与线程安全
- 面试-学生成绩问题
- 深入理解include预编译原理
- angularJS的ng-model指令
- bzoj4445: [Scoi2015]小凸想跑步
- Linux shell 脚本攻略学笔记7
- Chapter12——声明抽象基类Shape,由它派生出3个派生类:Circle,Rectangle,Triangle,用一个printArea函数分别输出以上三者的面积,3个图形的数据在定义对象时给
- java实现把数据库数据导出成word文件实现文件下载功能
- 中文字符通过ajax传到后台显示中文乱码
- 输入数字,判定空格和回车
- linux下搭建lua脚本语言的编程环境详解
- 微信平台url
- android 生产二维码
- 修改数据库的root密码