【问题标题】:Replace Values in configurtation file using sed使用 sed 替换配置文件中的值
【发布时间】:2016-05-02 07:51:38
【问题描述】:

Conf.txt

Enable_FUN                                    Yes
FUN_Privilege_Level                           User
Force_FUN_Payload_Authentication              No
Force_FUN_Payload_Encryption                  No
Character_Accumulate_Interval                 12
Character_Send_Threshold                      96
FUN_Retry_Count                               7
FUN_Retry_Interval                            50
Non_Volatile_Bit_Rate                         115200
Volatile_Bit_Rate                             115200

我需要将“Volatile_Bit_Rate”值从 115200 更新为 38400 注意:Volatile_Bit_Rate 和 Non_Volatile_Bit_Rate 有相同的匹配字符串,格式(空格/制表符)也应该不变。

我正在尝试以下方式,它有效。

var=38400
sed -i "s/\bVolatile_Bit_Rate\b/Volatile_Bit_Rate    $var/" solconf

那我需要删除字符串的结尾。

但是任何人都可以通过以下方式向我建议正则表达式,这会有所帮助。

sed -i "s/\bVolatile_Bit_Rate\b(expression for allspaces)(somenumbers) /Volatile_Bit_Rate(spaces)$var/" solconf

【问题讨论】:

    标签: bash shell awk sed sh


    【解决方案1】:

    你可以这样做:

    sed 's/\(^Volatile_Bit_Rate[[:blank:]]\+\)[0-9]\+$/\138400/' file.txt
    

    就地编辑文件:

    sed -i 's/\(^Volatile_Bit_Rate[[:blank:]]\+\)[0-9]\+$/\138400/' file.txt
    

    示例:

    $ cat file.txt
    Enable_FUN                                    Yes
    FUN_Privilege_Level                           User
    Force_FUN_Payload_Authentication              No
    Force_FUN_Payload_Encryption                  No
    Character_Accumulate_Interval                 12
    Character_Send_Threshold                      96
    FUN_Retry_Count                               7
    FUN_Retry_Interval                            50
    Non_Volatile_Bit_Rate                         115200
    Volatile_Bit_Rate                             115200
    
    $ sed 's/\(^Volatile_Bit_Rate[[:blank:]]\+\)[0-9]\+$/\138400/' file.txt
    Enable_FUN                                    Yes
    FUN_Privilege_Level                           User
    Force_FUN_Payload_Authentication              No
    Force_FUN_Payload_Encryption                  No
    Character_Accumulate_Interval                 12
    Character_Send_Threshold                      96
    FUN_Retry_Count                               7
    FUN_Retry_Interval                            50
    Non_Volatile_Bit_Rate                         115200
    Volatile_Bit_Rate                             38400
    

    【讨论】:

      【解决方案2】:
      sed -ri "s/^(Volatile_Bit_Rate\s*)[0-9]+$/\1$var/g" file
      

      【讨论】:

        【解决方案3】:

        我为上述要求找到了一个简单的答案,

        sed "/\bVolatile_Bit_Rate\b/s/\b38400\b/115200/g" 配置

        【讨论】:

          【解决方案4】:

          又一个变种:

          var=38400
          sed -i "/\bVolatile_Bit_Rate\b/s/[0-9]* *\$/$var/" solconf
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-01-20
            • 1970-01-01
            • 2020-03-07
            • 1970-01-01
            • 2020-01-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多