我有一个看起来像这样的配置文件
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
。最终我的目标是将config中的值替换为DIR
变量的内容。
请(h)了解如何在这种情况下使用sed工作。
=============================================== ============
更新:在从下面提供的答案中获取主要提示后,我能够使其正常运行。以下行完全符合我的要求..
sed -i 's|\(keyTab\s*=\).*|\1"'"$DIR"'"|' file.conf
答案 0 :(得分:3)
sed 方法:
DIR="$( cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
sed -i 's#^\(keyTab\s*=\).*#\1"'"$DIR"'"#' file.cfg
答案 1 :(得分:1)
以下是我的sed工作原理:
sed -i 's/^\(keyTab=\).*/\1NEW\/PATH/' test.conf