[英]modify a file using a bash script with sed
與這些問題類似:
在這樣的文件中:
define('_DB_NAME_', 'anything');
define('_DB_USER_', 'something else');
define('_DB_PASSWD_', 'and another value');
如何用sed來替換值anything
, something
和another
由指的關鍵值(未知) _DB_NAME_
, _DB_USER_
和_DB_PASSWD
?
您可能想要:
sed -E "
s/('_DB_NAME_', ')[^']+/\1ABC/
s/('_DB_USER_', ')[^']+/\1DEF/
s/('_DB_PASSWD_', ')[^']+/\1GHI/
"
我認為awk更具可讀性:
awk -F "'" -v OFS="'" '
$2 == "_DB_NAME_" {$4 = "ABC"}
$2 == "_DB_USER_" {$4 = "DEF"}
$2 == "_DB_PASSWD_" {$4 = "GHI"}
{print}
'
sed "s/\(define('_DB_NAME_', \).*/\1'new value');/" filename
其他兩個也一樣。
如果要在適當的位置更改文件,可以使用-i
,但必須小心,不同版本的sed的處理方式有所不同。
sed -i -e 's/anything/newanything/g;s/something/newthing/g;s/another/newanother/' tempfile
tempfile包含您擁有的代碼。 輸出看起來像這樣
define('_DB_NAME_', 'newanything');
define('_DB_USER_', 'newthing else');
define('_DB_PASSWD_', 'and newanother value');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.