`
zhtch_123
  • 浏览: 85138 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

实用的shell脚本-------修改cfg文件

阅读更多
1.用于修改 cfg文件的shell脚本:
#!/usr/bin/ksh
function cfg_update_sec_key_value
{   
    typeset file_name="$1"
    typeset sec_name="$2"
    typeset key_name="$3"

    shift 3
    typeset key_value
    set -A key_value "$@"

    typeset -i sec_line_start
    typeset -i sec_line_end
    typeset key_line_buf

    ##查找段所在的起始行和结束行
    sec_line_start="`sed -n \"/^[ |${KEY_TAB}]*\[${sec_name}\]/=\" $file_name`"
    sec_line_start="`echo $sec_line_start`"
    ((sec_line_start+=1))
    sec_line_end="`sed -n \"$sec_line_start,/^[ |${KEY_TAB}]*\[.*\]/p\" $file_name | wc -l`"
    sec_line_end="`echo $sec_line_end`"
    ((sec_line_end=sec_line_start+sec_line_end-1))

    ##处理键名中的[和]
    typeset tmp_key_name="`echo $key_name | sed 's/\[/\\\[/g' | sed 's/\]/\\\]/g'`"
   
    typeset tmp_file="${smdb_user_home}/tmp.tmp"

    ##查找键所在行并修改键值
    typeset -i i=0
    typeset line_no=1
    typeset -i j=1   #指向当前行
    typeset -i k=2   #指向当前域
    typeset -i nf=0  #记录匹配行中以'#'符分隔的域数
    typeset note=""  #记录域信息
    typeset note_temp=""
    typeset line_max=`wc -l ${file_name}|awk '{print $1}'`    #记录文本的行数

    while [ "${j}" -le "${line_max}" ]
    do
        key_line_buf=`sed -n "${j}"p "${file_name}"`      #读取行
        if [ $line_no -ge $sec_line_start -a $line_no -le $sec_line_end ];then
            echo "$key_line_buf" | grep "^[ |${KEY_TAB}]*$tmp_key_name[ |${KEY_TAB}]*=.*$" 1>/dev/null 2>&1
            if [ $? -eq 0 ];then
                nf=`echo "$key_line_buf"|awk -F# '{print NF}' 2>/dev/null`
                if [ $nf -ge 2 ];then   #行中含有注释
                    while [ $k -le $nf ]
                    do
                        note=`echo "$key_line_buf"|awk -F# -v y=$k '{print $y}'`
                        note_temp="${note_temp}#${note}"
                        ((k+=1))
                    done
                        key_line_buf="$key_name=${key_value[i]}     $note_temp"
                        ((i+=1))
                else                     #行中无注释
                    key_line_buf="$key_name=${key_value[i]}"
                    ((i+=1))
                fi
            fi    #end匹配成功,进行处理
        fi       #end在指定段中查找指定的键名$tmp_key_name
        echo "$key_line_buf" >> $tmp_file   #输出行
        ((line_no+=1))
    ((j+=1))
    done

    cp $tmp_file $file_name
    rm -f $tmp_file

    return 0
}


2.调用cfg_update_sec_key_value函数的方法:
cfg_update_sec_key_value “file” “section” “key” “value”
修改成功返回0,返回其他值为失败。
分享到:
评论

相关推荐

    shell脚本一键安装zookeeper3.4.5

    在IT行业中,shell脚本是一种常用的自动化工具,用于在Linux或Unix系统中执行一系列命令。在本案例中,"shell脚本一键安装zookeeper3.4.5"指的是使用一个自定义的shell脚本来简化Apache ZooKeeper 3.4.5的安装过程。...

    Debian-Shell-Tools-master.zip

    1. **脚本文件**:通常以.sh结尾,如`script1.sh`, `script2.sh`等,这些是可执行的shell脚本,用户可以通过运行`bash script1.sh`来调用它们,执行各种任务,如系统备份、软件安装、服务管理等。 2. **配置文件**...

    shellscript.tar.gz

    Shell脚本是Linux/Unix操作系统中用于自动化任务的编程语言,它基于Bash或其他Shell解释器。...通过深入研究这些脚本,你可以掌握Shell脚本的核心概念和实用技巧,从而提升你在Linux系统管理和自动化工作流中的能力。

    Linux使用shell脚本定时删除历史日志文件

    配置文件`del_history_files.cfg`包含了需要清理的目录和对应的小时数,例如`/home/logs/nginx=720`表示`/home/logs/nginx`目录下的文件,如果超过720小时(30天)未被修改,就会被删除。 最后,为了使脚本定时执行...

    cfg2html:cfg2html是UNIX shell脚本,类似于supportinfo,getsysinfo或get_config,不同之处在于它为HP-UX,SCO-UNIX,AIX,Sun OS和Linux系统创建HTML(和纯ASCII)系统文档。 包括用于SAP,Oracle,Informix,Serviceguard,光纤通道SAN,TIPix,OpenText(IXOSLEA),SN海量存储(如MAS,EMC,EVA,XP,网络节点管理器和DataProtector等)的插件。 cfg2h

    cfg2html完全用本机语言编写,用于系统管理:作为shell脚本。 有经验的用户和系统管理员可以通过使用插件框架或修改源代码来修改或扩展cfg2html脚本,使其适合特定情况。 目的 cfg2html将系统配置收集为HTML和文本...

    grub2-themes-master.zip

    - **Shell脚本编程**:在Linux中,shell脚本是用解释器执行的文本文件,可以自动化一系列命令。在这个主题包中,shell脚本用于自动化主题的安装过程。 总的来说,"grub2-themes-master.zip"为GRUB2启动器提供了美观...

    cfg.rar_cfg_ini配置读取_linux ini_linux ini文件_linux 读取ini

    在Linux环境下,我们没有内置的特定命令来直接操作ini文件,但可以通过编程语言如Python、Perl或使用shell脚本来实现。下面我们将详细介绍如何在Linux中读取和编辑ini文件。 1. **Python的ConfigParser模块**: ...

    CGI 脚本入侵快速上手+脚本使用方法

    ### CGI脚本入侵快速上手及脚本使用方法 #### 一、理解Shell与CGI **Shell**在计算机科学中通常指的是一个用户与操作系统之间的交互界面,它能够读取用户的命令并根据这些命令执行相应的操作。对于黑客或安全研究...

    kafka_2.11-2.1.1 脚本快速安装

    【标题】"kafka_2.11-2.1.1 脚本快速...理解这些步骤对于搭建和管理Kafka环境至关重要,同时还需要熟悉Java和Shell脚本知识,以便于调试和维护。在实际生产环境中,还需要考虑监控、安全、数据持久化和备份等高级话题。

    zookeeper自动化安装脚本

    4. 修改配置文件:编辑`conf/zoo.cfg`,设置数据存储目录(dataDir)和其他相关参数。 5. 创建数据目录并赋予正确权限:`mkdir /path/to/dataDir`,`chown -R zookeeper:zookeeper /path/to/dataDir`。 6. 初始化...

    文件修改状态监控

    3. `restore.sh`、`export.sh` 和 `save.sh`:与上述批处理脚本相对应,这些是适用于macOS或Linux的Shell脚本,功能相同,但适应不同的操作系统环境。 4. `fileObserver.jar`:这可能是一个Java可执行文件,是整个...

    Hadoop和Hbase 配置文件-完整好的

    2. `hbase-env.sh`: 这是一个shell脚本,用于设置HBase运行时的环境变量,如JVM内存大小(`HBASE_HEAPSIZE`)。 3. `regionservers`: 列出所有HBase的RegionServer节点,这些节点负责存储和处理数据。 4. `zoo.cfg...

    .cfg:点文件

    在Shell脚本中,可以通过命令行工具如`sed`、`awk`或`grep`来处理这些配置文件,提取或修改其中的数据。例如,要提取上述示例中的服务器地址,可以使用以下命令: ```bash grep server_address .cfg-main | cut -d'...

    debian-preseed:使用前面的文件自动执行Debian安装

    安装程序有很多选项,因此preseed.cfg文件可能会很长。 配置文件必须在安装时可用。 该项目将preseed.cfg文件插入ISO映像中。 Debian安装程序可以在发行版边界上进行更改,因此该项目分为发行版文件夹。 破坏者 ...

    Ansible脚本搭建K8s集群.pptx

    - 修改`/etc/ansible/ansible.cfg`文件以指定配置细节。 - 配置文件查找顺序:优先检查环境变量`ANSIBLE_CONFIG`指向的路径文件,接着是用户家目录下的`.ansible.cfg`文件,最后是`/etc/ansible/ansible.cfg`。 -...

    FTP unix下put & windows下bat批处理get总结

    下面是一份具体的Unix shell脚本示例,用于将本地文件上传到远程FTP服务器: ```bash #!/usr/bin/ksh cd /path/to/local/directory/ # 更改到本地目录 echo "===ftpPutStarting==="`date` >> put.date # 记录脚本...

    mongo-migrate:使用Shell进行MongoDB迁移

    MongoDB迁移该项目旨在成为mongodb的不可知论的迁移系统。 有时,当您添加属性时,您需要为现有文档提供一个值。 经常这样做,此工具可以提供帮助,因为它... 您可以通过在config.cfg中编辑MIGRATION_DIR配置来更改它

    Linux 运维入门到高级.pdf

    - 创建 Kickstart 脚本文件 (`ks.cfg`),并通过 PXE 引导或本地介质进行安装。 #### 四、Linux 编程篇 **4.1 Linux Shell 编程** - **4.1.1 Shell 编程简介** - Shell 编程是利用 Shell 语言编写的脚本来自动...

    基于OpenOCD和GDB的LinkScope在线调试软件设计源码

    本项目为基于OpenOCD和GDB的LinkScope在线调试软件设计源码,共计1094个文件,涵盖827个配置文件(cfg)、36个Tcl脚本(tcl)、27个动态链接库(dll)、26个shell脚本(s)、21个头文件(h)、19个大写脚本文件(S)...

    u盘启动ubuntu linux安装

    � 1.3.5 修改 SYSLINUX.CFG � 1.3.6 从 USB 记忆棒引导启动 � 1.3.7 将 USB 记忆棒挂载为 /cdrom o 1.4 安装完成之后 o 1.5 参考 o 1.6 Comments and Troubleshooting � 1.6.1 On Partitioning the Flash drive

Global site tag (gtag.js) - Google Analytics