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

prolink007:

我想在配置文件中搜索该表达式:“ 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
sapht:

这是一个示例表达式:

sed -i 's/^\(central\.database\s*=\s*\).*$/\1SQLTEST/' file.cfg

如果要匹配其中/的内容,可以使用另一个定界符:

sed -i 's#^\(cent/ral\.data/base\s*=\s*\).*$#\1SQL/TEST#' file.cfg

或使用可变扩展:

VAL="SQLTEST"
sed -i "s/^\(central\.database\s*=\s*\).*\$/\1$VAL/" file.cfg

在您的示例中:

sshRetValue=`sed -i "s/^\(\1$CENTRAL_DB_NAME\s*=\s*\).*\$/\1$CENTRAL_DB_VALUE/" /home/testing.txt`;

$ CENTRAL_DB_NAME前面有一个\ 1无效。而且,sed不会打印它的返回值。这是检查返回值的首选方法:

sed -i "s/^\($CENTRAL_DB_NAME\s*=\s*\).*\$/\1$CENTRAL_DB_VALUE/" /home/testing.txt;
sed_return_value=$?

最终通过管道传输到ssh(未经测试):

sed_return_value=$(ssh server <<EOF
    sed -i "s/^\($CENTRAL_DB_NAME\s*=\s*\).*\$/\1$CENTRAL_DB_VALUE/" /home/testing.txt;
    echo $?
EOF
)

-i用于替换输入文件中的数据。否则,sed写入stdout。

正则表达式是它们自己的领域。除非有某些特定的功能使您难以理解,否则不可能在stackoverflow答案中深入解释它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用sed在配置文件中查找和更改信息

使用awk / sed更改配置文件

如何覆盖Maven-compiler-plugin的配置。(构建目录,我想通过使用配置文件进行更改)

如何让 Playwright 在我的配置文件中使用 headless 的值?

如何使用sed编辑配置文件

无法使用组和多行使用sed更改配置文件

我如何通过使用inotifywait观察文件来获取更改

如何从Linq中的配置文件的Appsettings获取键和值

如何通过gnome-terminal配置文件首选项->使用dconf或gsettings设置颜色来更改背景以使用内置主题?

Python:如何仅使用键(无值)读取配置文件

我应该使用boto3来仅通过IAM实例配置文件写入S3存储桶,但是如何?

如何通过Java代码更改Apache flume的配置文件?

如何在没有KDE的情况下通过配置文件编辑来更改QtCurve样式/主题?

使用bash和sed编辑配置文件

使用sed和bash生成网络配置文件

使用 sed 和 regex 替换配置文件的部分

我如何使用grep通过-n开关来sed来替换文件

量角器:如何使配置文件更灵活?

如何使用发布配置文件来定位不同的环境

如何更改我的显卡电源配置文件?

如何使用sed替换配置文件的变量?

Python和Selenium:如何多次更改Firefox的配置文件

更改配置文件后如何保存和退出?

使用Selenium和Python定义WebDriver后如何更改Firefox配置文件首选项

我正在尝试通过我的 Apple 帐户使用 Firebase,但找不到证书、标识符和配置文件

我想在 linux 中通过 vim blowfish2 加密来保护配置文件

更改配置文件值的脚本(ConfigParser)

如何通过在Powershell中提供配置文件来运行可执行文件(exe)

使用 sed 将 #' 插入配置文件