zoukankan      html  css  js  c++  java
  • 2.10临时文件命名与随机数2.11

    编写shell脚本时,经常需要存储临时数据,系统中最适合存储临时数据的位置/tmp(该目录中的内容在系统重启后会清空)。

    1)创建临时文件

    $ filename=`mktemp`

    $ echo $filename

    /tmp/tmp.8xvhkjF5fH

    上面的代码创建了一个临时文件,并打印出存储在$filename中的文件名。

    2)创建临时目录

    $ dirname=`mktemp -d`

    $ echo $dirname

    tmp.NI8xzW7VRX

    上面的代码创建了一个临时目录,并打印出存储在$dirname中的目录名

    3)如果想仅仅想生成文件名,又不希望创建实际的文件或目录,

    $ tmpfile=`mktemp -u`

    $ echo $tmpfile

    /tmp/tmp.RsGmilRpcT

    文件名存储在$tmpfile中,但并没有创建对应的文件

    4)根据模板创建临时文件名

    $ mktemp test.XXX

    text.2c

    工作原理:mktemp它生成一个临时文件并返回其文件名(如果创建的是目录,返回目录名),如果提供了定制模板,X会被随机的字符(数字或字母)替换,注意,mktemp正常工作的前提是保证模板中至少要有3个X。

    2.11分割文件和数据

    1)工作原理

    假设有一个文件data.file,其大小为100KB,将它分割成多个大小为10KB的文件,如下

    $ split -b 10k data.file

    $ ls

    data.file xaa xab xac xad xae xaf xag xah xai xaj

    这些文件以xab,xac,xad形式命名,这表明他们都有一个字母后缀,可以使用-d参数来以数字后缀,以及-a 指定后缀长度,如

    $ split -b 10k data.file -d -a 4

    除了k(KB)后缀,还有M(MB),G(GB),c(byte),w(word)。

    2)补充内容

    a、为分割后的文件指定文件名前缀

    之前那些分割后的文件都有一个文件名前缀x,下面使用自己自定义的前缀,其格式如下

    $ split [COMMAND_ARGS] PREFIX

    $ split -b 10k data.file -d -a 4 split_file

    如果不像按照数据块大小,而是需要根据行数来分割文件的话,可以使用-l no_of_lines,如

    $ split -l 10 data.file

    #分割多个文件,每个文件包含10行

    b、csplit,它能够根据指定的条件和字符串匹配选项对日志文件进行分割。它是split工具的一个变体,split只能根据数据大小或行数分割文件,而csplit可以根据文本自身的特点进行分割--是否存在某个单词或文本内容都可以作为分割文本的条件。

    如,把一个log里面含有多个SERVER的部分分割成多个log文件

    $ csplit server.log /SERVER/ -n 2 -s {*} -f server -b "%02d.log" ; rm server00.log

    $ ls

    server01.log  server02.log server03.log server.log

    /SERVER/:用来匹配某一行,分割过程即从此处开始

    /[REGEX]/:表示文本样式,包括从当前行(第一行)直到(但不包括)包含“SERVER”的匹配行。

    {*}:表示根据匹配重复执行分割,直到文件末尾为止,可以用{整数}的形式来指定分割执行的次数。

    -s使命令进入静默模式,不打印其他信息

    -n指定分割后的文件名后缀的数字个数,例如01,02,03等

    -f指定分割后的文件名前缀

    -b指定后缀格式。例如%02d.log,类似于c语言中的printf的参数格式。

    因为上面分割后的第一个文件没有任何内容(匹配的单词就位于文件的第一行中),所以我们删除了server00.log。

  • 相关阅读:
    起步X5 UI模型使用的新的JAVASCRIPT UI库 DHTMLX (简称DHX)
    行车记录仪
    牛客网——华为机试(题9:提取不重复的整数)(Java)
    牛客网——华为机试(题8:合并表记录)(Java)
    牛客网——华为机试(题7:取近似值)(Java)
    牛客网——华为机试(题6:质数因子)(Java)
    牛客网——华为机试(题5:进制转换)(Java)
    牛客网——华为机试(题4:字符串分隔)(Java)
    牛客网——华为机试(题2:计算字符个数)(Java)
    牛客网——华为机试(题1:字符串最后一个单词的长度)(Java)
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6193936.html
Copyright © 2011-2022 走看看