0

テキストを一重引用符で置き換える必要がありますが、sed機能しません。これが私のコードです。手伝って頂けますか?

次の形式のテキスト ファイルがあります。

#sometext
$configuration_TEstbk2_bk2_environment12 = 'lalala'
$configuration_TEstbk2_bk2_envoronment12 = 'lalala1'
$configuration_TEstbk2_bk2_staging12 = 'BACKUP 2'
$configuration_waq4faw4f_q4fq4qg4f = 'r234rq43rq4rqr'
$configuration_alice_StagingTEstBk_bk = 'testebk'
$configuration_deployment_overlays_alice_TEStStngDir = 'some'
$configuration_arefgqrqgrq_341q34tq34t = '134t135'

そして、私は次のようなことをする必要があります:

sed s/$configuration_arefgqrqgrq_341q34tq34t   ='134t135'/$configuration_arefgqrqgrq_341q34tq34t = 'NEWVALUE'/g 

との多くの組み合わせを試しましsedたが、うまくいくものを見つけることができません。

4

5 に答える 5

0

引用符をキャプチャすることで、引用符の一致を完全に回避することもできます。

sed '/$configuration_arefgqrqgrq_341q34tq34t/{
         s/\(= *.\).*\(.\) *$/\1NEWVALUE\2/
}' input
于 2013-04-12T21:06:03.070 に答える
0

あなたの問題は引用にあると思います。複雑な引用符を使用して、二重引用符で囲む必要がある単一引用符を除いて、すべてが単一引用符で囲まれていることを確認できます。

sed 's/$configuration_arefgqrqgrq_341q34tq34t *= *'"'134t135'"'/$configuration_arefgqrqgrq_341q34tq34t = '"'NEWVALUE'/g"

...または、いくつかの一時変数を使用して、全体を読みやすくし、二重引用符の単一のペアに含めるのに適したものにすることができます。

directive='$configuration_arefgqrqgrq_341q34tq34t'
oldvalue="'134t135'"
newvalue="'NEWVALUE'"
sed "s/$directive *= *$oldvalue/$directive = $newvalue/g"

(マッチが 1 つしかない場合、/gフラグは不要です。)

于 2013-04-12T20:42:23.647 に答える