簡體   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