gpt4 book ai didi

linux - 如何使用 sed 通过灵活的键和值更改我的配置文件?

转载 作者:IT老高 更新时间:2023-10-28 12:37:51 26 4
gpt4 key购买 nike

我想在配置文件中搜索此表达式:“central.database”。然后我想将与“central.database”关联的设置更改为“SQLTEST”。

配置文件的布局最初如下所示:

central.database = SQLFIRSTTEST

这是我希望它在 sed 替换后的样子:

central.database = SQLTEST

我在 bash 脚本中执行此操作,欢迎提出任何建议、建议或替代解决方案!

(其实 central.databaseSQLTEST 都来自这里的 bash 变量。)


我当前的代码(第三次尝试):

sshRetValue=$(ssh -p "35903" -i $HOME/sshids/idrsa-1.old ${1} <<EOF
sed -i "s/^\($CENTRAL_DB_NAME\s*=\s*\).*\$/\1$CENTRAL_DB_VALUE/" /home/testing.txt;
echo $?
EOF
)

错误信息:

Pseudo-terminal will not be allocated because stdin is not a terminal.
sed: -e expression #1, char 58: unknown option to `s'
-bash: line 3: EOF: command not found

最佳答案

sed -i -e '/central\.database =/ s/= .*/= new_value/' /path/to/file

解释:

  • -i 告诉 sed 将结果保存到输入文件。没有它,sed 会将结果打印到标准输出。
  • /central\.database =/ 匹配包含斜线之间的字符串的行:central.database =. 被转义,因为它是正则表达式中的特殊字符。
  • s/OLD/NEW/ 部分执行 s 替换。 OLD 字符串是要匹配的正则表达式,而 NEW 部分是要替换的字符串。
  • 在正则表达式中,.* 表示“匹配任何内容”。所以 = .* 匹配等号、空格,然后是其他任何内容。

关于linux - 如何使用 sed 通过灵活的键和值更改我的配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5955548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com