V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
css3
V2EX  ›  程序员

Linux 中如何使用 sed 修改 ini 配置文件节点内容

  •  
  •   css3 · 2020-12-03 11:05:08 +08:00 · 955 次点击
    这是一个创建于 1442 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个修改配置文件的需求,注释或者取消注释 ini 里边一个节点, 配置文件节点 key 的个数和行数都不固定,是变化的

    [parameters1]
        database_user    = user1
        database_version = 2503
    
    [parameters2]
        database_user    = user2
        database_version = 2506
    

    希望给 parameters1 节点整体添加注释(效果图如下), 用 sed 能改吗,或者用其他方法也行:

    #[parameters1]
    #   database_user    = user1
    #   database_version = 2503
    
    
    [parameters2]
        database_user    = user2
        database_version = 2506
    

    还有就给现有带注释的内容,取消注释

    4 条回复    2020-12-03 19:37:34 +08:00
    aloxaf
        1
    aloxaf  
       2020-12-03 11:22:08 +08:00
    ```
    section1='^\[parameters1\]'
    section2='^\[parameters2\]'
    sed -i "/$section1/,/$section2/{/$section2/\!{s/.*/#&/}}" test.txt
    ```
    css3
        2
    css3  
    OP
       2020-12-03 11:31:49 +08:00
    @aloxaf 老哥,不太行啊,parametersX 有 n 个😭
    nano91
        3
    nano91  
       2020-12-03 17:29:24 +08:00
    python 脚本吧 看看文件读写和字符串操作就行了 这种常用的操作 可以自己写一个工具集存着备用了
    @css3
    IgniteWhite
        4
    IgniteWhite  
       2020-12-03 19:37:34 +08:00 via iPhone
    这种需求,明显 awk 比 sed 要合适
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5316 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:09 · PVG 15:09 · LAX 23:09 · JFK 02:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.