2016-11-14 5 views
0

でbashスクリプトを使用してファイルを変更します。使用方法は、これらの質問に似てSED

define('_DB_NAME_', 'anything'); 
define('_DB_USER_', 'something else'); 
define('_DB_PASSWD_', 'and another value'); 

:このようなファイルで

を値anything、の代わりにsedキー値_DB_NAME_,_DB_USER_、および_DB_PASSWDを参照することによって(これらは不明です)、3210およびanotherを使用していますか?

+0

最初の行の2番目の引数を置き換えたいのですか、または "anything"引数を置き換えるかどうかを指定しますか? – Beta

+0

キー '_DB_NAME_'に応じて' anything'(これは不明です)の値を置き換えたい –

答えて

1
sed "s/\(define('_DB_NAME_', \).*/\1'new value');/" filename 

と同様に。

ファイルを変更する場合は、-iを使用できますが、別のバージョンのsedハンドルとは異なる注意が必要です。

0
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'); 
+0

わかりやすくするために私の質問を編集しました。値「anything」は不明です。ですから、目標は '_DB_NAME_'を参照して置き換えることです。 –

+0

@francoisromainああ、私は少し銃を飛び越えてごめんなさい申し訳ありません。 – davidejones

1

次のようになります。

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} 
' 
+0

sedの最初の言葉:' \ 1はREに定義されていません –

+0

'-r '-E'の代わりに' -E'を使います。あなたはどのOSを使用していますか? –

+0

これはmacos上にありますが、最終的にはlinux上で動作します(私は正確にはわかりませんが、共有ホスティングの実行中のapacheです) –

関連する問題