2016-12-22 6 views
0

私の設定ファイルでvaribleという名前の$ buildDateの値(unixタイムスタンプ)を更新したいとします。sedを使用して特定の単語と行のテキストを置き換える方法は?

この文字列は

// .... 
$buildDate='1482327565'; 
// .... 

The official documentation言うようになっています

ONLY "バズ"

のsed「/バズを/含む行のための "バー" と

#代用 "foo" というs/foo/bar/g '

このように使用しようとしました:

SED -r -e "/ buildDate/S/[0-9] {10}/0000000000/G" のconfig.php

しかし、それは動作しません。代わりに、「*** forbidden path:/ buildDate/s/[0-9] {10}/0000000000/g」というメッセージが表示されます。

更新日: 解決済み。それは私の非root権限のためです。

+0

私は '-e'を' -i'に置き換え、期待どおりに動作しました。 –

+0

GNU sedの '-e'は ''実行するコマンドにスクリプトを追加する ''という意味で、 '-e'の後のトークンはファイルへのパスです。 '-e'を削除してください。 –

+0

@AvihooMamka同じエラー –

答えて

0

はこのお試しください:ここで

sed '/buildDate/{s/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/0000000000/g}' config.php 
+0

'/ pattern/s/old/new /'は '/ pattern/{s/old/new /}'とどう違うのですか?私はそうは思わない。 –

1

をAwkのソリューションです:

#!/usr/bin/awk -f 
BEGIN { 
    FS = "=" 
} 
$1 == "$buildDate" { 
    $2 = "0000000000" 
} 
1 
0

Alex-あなたは次のことを試してみて、このことができますなら、私に知らせてくださいでした。

sed "/buildDate/s/[0-9]\{10\}/0000000000/g" config.php 

上記は私がBASH環境でテストしたところ正常に動作しました。

関連する問題