使用shell脚本修改conf文件中的值

ve7v8dk2  于 2022-11-25  发布在  Shell
关注(0)|答案(3)|浏览(282)

我有shell脚本,作为脚本的一部分,我想更新a.conf文件(它是配置文件),其中包括key-value对、我想更新键的值。脚本要求用户输入我存储到变量中的值。我如何使用这些变量更新下面文件中的多个值。我尝试了sed,但不确定如何使用它,只修改特定键的值
一个.conf文件

key1=value1
key2=value2

我尝试了下面的sed命令,但它没有更新给定keyvalue-

sed -i -e "s/\($key1 *= *\).*/\1$newvalue/" $CONFIG_FILE

更新

如果我通过删除*=*\之间的空格来更新上述命令,则新值将被附加到现有值,例如key1=value1newvalue
不知道我错过了什么

nnsrf1az

nnsrf1az1#

我发现了一种方法来修改给定文件中特定键值的格式-

key1=value1
key2=value2

sed -i "s/key1.*/key1=$newvalue/" "$CONFIG_FILE"
3b6akqbq

3b6akqbq2#

这里我逐行读取a.conf,并将key和瓦尔定义为变量,要求用户输入值,这些值在a.conf中用sed替换。

#!/bin/bash

CONFIG_FILE=a.conf
cat $CONFIG_FILE | while read line; do
   echo "Processing line: $line"
   key=$(echo $line | awk -F= '{print $1}');
   read  -p "Enter value for $key " val < /dev/tty
   sed -ie "s/^$key=.*/$key=$val/" "$CONFIG_FILE"
done

试运行:

$ cat a.conf
key1=value1
key2=value2

$ ./script.sh
Processing line: key1=value1
Enter value for key1 test1
Processing line: key2=value2
Enter value for key2 test2

$ cat a.conf
key1=test1
key2=test2
wooyq4lh

wooyq4lh3#

使用Bash脚本通过sed更新文本此脚本首先运行cd到文件的位置,然后运行sed命令,并在文件名target.config中将旧值**#CONFIG_PACKAGE_oui-httpd = y替换为CONFIG_PACKAGE_oui-httpd=y**逻辑sed -i 's/old_text/New_Text/' filename.sh

#! /bin/bash
    cd /target/linux/gem6xxx/xs5g01_cpe/ 
    sed -i 's/#CONFIG_PACKAGE_oui-httpd=y/CONFIG_PACKAGE_oui-httpd=y/' target.config

相关问题