簡體   English   中英

使用帶有sed的bash腳本修改文件

[英]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來替換值anythingsomethinganother由指的關鍵值(未知) _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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM