繁体   English   中英

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

[英]Linux : Replace key-value pair, value contains file path

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

client {
keyTab="/home/path"
}

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

#!/bin/bash

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

当我运行这个脚本时, "/home/path"NEWPATH取代。 但是,当我将sed更改为

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

没有任何反应。 我期待值改为NEW/PATH 最终我的目标是将配置中的值替换为DIR变量的内容。

请s(h)了解如何在这种情况下使用sed工作。

================================================== =========

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

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

sed方法:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM