• linux shell 脚本获取和替换文件中特定内容


    1.从一串字符串中获取特定的信息

    要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息)

    1 timeout 1
    2 default 0
    3 
    4 title live
    5 find --set-root /casper/vmlinuz
    6 kernel /casper/vmlinuz boot=casper ignore_uuid showmounts ip=eth0,10.0.66.66,255.255.240.0,10.0.64.3
    7 initrd /casper/initrd.lz
    menu.lst

    要求2:修改(替换)原文件中特定内容:CenterServer.conf为SCC可执行程序的配置文件,需要将配置文件中的domain值改为本机IP。

     1 #CenterServer config file
     2 
     3 # Logging Type: syslog|cerr|cout|file
     4 LoggingType = cout
     5 
     6 # Logging level: NONE|CRIT|ERR|WARNING|INFO|DEBUG|STACK
     7 LogLevel = DEBUG
     8 #LogLevel = INFO
     9 
    10 #sip listen port
    11 UDPPort = 5060
    12 #SCC domain ip
    13 Domain = 10.0.73.14
    14 CallTimeout = 60
    15 
    16 #RDS client working thread num (1--8)
    17 RDSClientThreadNum = 2
    18 #RDS Client Log on|off
    19 RDSClientLog = off
    20 
    21 #Daemon process yes|no, default=yes
    22 IsDaemon = no
    23 
    24 #Web server addr
    25 WebServerUrl = http://localhost:9000
    26 
    27 #SCC state Database
    28 DataBase = scc
    29 MySqlUserName = root
    30 MySqlUserPasswd =jonet@666
    31 
    32 MsIp = 127.0.0.1
    33 MsPort = 9999
    CenterServer.conf

    实现脚本:

     1 #!/bin/sh
     2 MENULST="/JONET_boot/menu.lst"
     3 SCC_PATH="/JONET/bin/SCC/CenterServer.config"
     4 LOCALIP="`awk -F ',' '{print $2}' $MENULST |grep .`";
     5 echo $LOCALIP
     6 
     7 modify_scc()
     8 {
     9     DOMAIN="`cat $SCC_PATH|grep Domain`"
    10     echo $DOMAIN
    11     echo $LOCALIP
    12     #sed -e 's/Domain = 10.0.66.66/Domain = 10.0.73.15/g' $SCC_PATH
    13     sed -i 's/'"${DOMAIN}"'/Domain = '"${LOCALIP}"'/g' $SCC_PATH
    14 }
    15 
    16 
    17 modify_conf()
    18 {
    19     modify_scc
    20 }
    21 
    22 modify_conf
    23 
    24 exit 0
    conf.sh

    说明:sed -i 's/'"${DOMAIN}"'/Domain = '"${LOCALIP}"'/g' $SCC_PATH

      由于宏定义DOMAIN和LOCALIP在命令中使用$DOMAIN和$LOCALIP无法使用,需要使用'"${DOMAIN}"'和'"${LOCALIP}"',使执行脚本时能够替换

     1 #!/bin/sh
     2 MENULST="/JONET_boot/menu.lst"
     3 SCC_PATH="/JONET/bin/SCC/CenterServer.config"
     4 LOCALIP="`awk -F ',' '{print $2}' $MENULST |grep .`";
     5 echo $LOCALIP
     6 
     7 modify_scc()
     8 {
     9     DOMAIN="`cat $SCC_PATH|grep Domain`"
    10     echo $DOMAIN
    11     echo $LOCALIP
    12     sed -i 's/'"${DOMAIN}"'/Domain = '"${LOCALIP}"'/g' $SCC_PATH
    13 }
    14 
    15 modify_conf()
    16 {
    17     modify_scc
    18 }
    19 
    20 modify_conf
    21 
    22 exit 0
    conf.sh
  • 相关阅读:
    Android网络编程要学的东西与Http协议学习
    数据存储与访问之——初见SQLite数据库
    ViewPager基础入门
    调用android方法,出现版本太低解决方法
    Android Studio 代码自动提示无效
    策略模式
    C#通过SendARP()获取WinCE设备的Mac网卡物理地址
    简单理解和使用 C# 委托与事件
    Oracle SQL developer客户端 如何连接已经安装完毕的Oracle服务器端
    源码分析之Map(二)HashCode详解
  • 原文地址:https://www.cnblogs.com/yunsicai/p/3745102.html
Copyright © 2020-2023  润新知