Linux:替换键值对,值包含文件路径



我有一个看起来像这样的配置文件

client {
keyTab="/home/path"
}

我想根据当前目录更改键标签键值。我的脚本是这样的

#!/bin/bash
DIR="$( cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
sed -c -i "s/(keyTabs*=s*).*$/1NEWPATH/" file.cfg

当我运行此脚本时,"/home/path"被替换为NEWPATH。但是当我将 sed 更改为

sed -c -i "s#^(keyTabs*=s*).*$#1NEW/PATH#' file.cfg

然后什么也没发生。我希望该值更改为NEW/PATH.最终,我的目标是用DIR变量的内容替换配置中的值。

请简要说明在这种情况下如何使 sed 工作。

====

==================================================================更新:从下面提供的答案中获取主要提示后,我能够使其正常工作。以下行完全符合我的意愿。

sed -i 's|(keyTabs*=).*|1"'"$DIR"'"|' file.conf

sed 方法:

DIR="$( cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
sed -i 's#^(keyTabs*=).*#1"'"$DIR"'"#' file.cfg

以下是我的 sed 的工作方式:
sed -i 's/^(keyTab=).*/1NEW/PATH/' test.conf

最新更新