• shell脚本实现的修改文件中的字符串(转)


    有两天没有寫自己的博客了,本来决定要每天坚持写,看来自己有时就是太懒了,总是会找借口不写了,今天很累明天再写吧,结果明天也没写,明天我一定写两篇,可是最后一篇都没写。也许这就是人之所以的人之惰性吧,我天生可能就是有一种惰性,很多事情都不是太会去主动做,这是不好而且可能是致命的缺点,所以决定了还是应该尽量去克服这个缺点,当然如果中间我确实有几天没写,如果不小心耽误了您搜索代码,对不起了,您可千万不要用砖头来拍我,因为现在的砖头不结实,拍死还好,拍不死可就傻了,那时郁闷也无奈了,呵呵。
        言规正传昨天公司的mary请我帮忙想一下如何去修改一个再linux下的XML文档,如果使用c语言,那当然可以了使用一个对搜索位置的函数通过指针传递来实现,这个恐怕要好好的想一想,自己的c语言也不是那么的好了,对内存操作n年了总是不能很好的解决,无奈之下女生求助,是绅士的总是要帮一把了您说对吧,所以没有办法了只要去试试看了,我打算使用shell脚本去实现。
        通过搜集一些资料和自己先前对一些shell脚本的编写,我突然想到来对XML文件进行读取,然后根据cut指令获找到想要的替换,然后之行vi指令中的字符串处理命令来实现。这个方法肯定行了。现在我就把代码贴出来,共享一直是我追求的理念。共享共享。

    #!/bin/sh
    DIR="tvdevicedesc.xml"
    CONF_DIR1
    ="upnp_name.conf"
    #cat ${CONF_DIR}
    var=`cat ${DIR} | grep "<friendlyName>"`
    temp
    =`echo $var | cut -f2 -d' '`
    tt
    =`echo $temp | cut -f2 -d'>' | tr -d "</friendlyName>"`
    echo
    $tt
    temp2
    =`cat ${CONF_DIR1}`
    echo
    $temp2
    vi
    ${DIR} <<-!
    :g
    /$temp/s//$temp2/g
    :wq
    !

     这就是我写点代码了,这个脚本代码多了一些无用的东西,因为我是要再脚本中查看是不是修改了我需要修改的字符串了所以加入了前面的很多代码其实就三句就可以实现了。

    vi ${DIR} <<-!
    :g
    /$temp/s//$temp2/g
    :wq
    !

    前面的都是用来对结果的显示的。当然这个shell是运行再linux下装有vim编辑工具的,如果没有这个工具那么我这个脚本就作废了,如果您看了请注意这个地方。
    下面是一个写道公司削减内核下的linux的shell脚本,由于削减内核中内存的存贮有限一般的应用软件都没有装载所以我只好使用些常用的shell语言命令了,代码如下:

    #!/bin/sh
    DIR="tvdevicedesc.xml"
    CONF_DIR1
    ="upnp_name.conf"
    #cat ${CONF_DIR}
    var=`cat ${DIR} | grep "<friendlyName>"`
    temp
    =`echo $var | cut -f2 -d' '`
    tt
    =`echo $temp | cut -f2 -d'>' | tr -d "</friendlyName>"`
    echo
    $tt
    temp2
    =`cat ${CONF_DIR1}`
    echo
    $temp2
    sed 's
    /'$tt'/'$temp2'/g' tvdevicedesc.xml >tvdevicedesc.xml
    这里使用到了sed指令,这个指令我从网上了解到好像是对流进行操作的,他的功能是比较强大的,有些参数我没有做过尝试,如果您做过了记得给我留言,燕过留声 ,人过留名嘛,先谢谢了。对于这个脚本我有点说明,可能是有于tvdevicedesc.xml 存在如果你想把修改后的在写入tvdevicedesc.xml 文件那么文件会变成空。但是如果写成别的文件名字那就没有问题。这个可能就是对数据流操作的先后顺序,因为我不是太明白,这只是我一点点的猜想,如果您知道什么原因我就不重复了 共享吧 呵呵

  • 相关阅读:
    MSSQL锁定1.Isolation level (myBased)
    等待状态CXPACKET分析
    拒绝了对对象 'sp_sdidebug'(数据库 'master',所有者 'dbo')的 EXECUTE 权限
    Oracle CBO 统计信息的收集与执行计划的选择
    Oracle 11gR1 on Win7
    读书笔记 <<你的知识需要管理>>
    ORA01555 总结
    Buffer Cache Management
    如何选择合适的索引
    书评 <SQL Server 2005 Performance Tuning性能调校> 竟然能够如此的不用心........
  • 原文地址:https://www.cnblogs.com/qq78292959/p/2081621.html
Copyright © 2020-2023  润新知