sedを使用して行を置き換える方法は?

sedを使用して行を置き換える方法は?

ルートを変更しようとしています。

"['Used', 170], <c\!--Ma_P_ST1_vCPU_Used-->" 

そして

"['Used', 555], <c\!--Ma_P_ST1_vCPU_Used-->" 

htmlファイルから。

私が試したことは次のとおりです。

sed "s/['Used', 170], <\!--Ma_P_ST1_vCPU_Used-->/['Used', 170], <\!--Ma_P_ST1_vCPU_Used-->/" Code_edit.html

いくつかの盾を試しました。役に立ちません。

答え1

sed引用符で囲む必要がある特別な意味を持ついくつかの文字があります。
この文について:

['Used', 170], <\!--Ma_P_ST1_vCPU_Used-->

[]および以下を引用する必要があります\

\['Used', 170\], <\\\!--Ma_P_ST1_vCPU_Used-->

次に、数字の周りのテキストをキャプチャするには、キャプチャ括弧を追加します。

\(\['Used', \)170\(\], <\\\!--Ma_P_ST1_vCPU_Used-->\)

そしてそれを(数値リスト)170に変換します。[0-9]*これを実行した後、sedコマンドは次のようになります。

sed "s/\(\['Used', \)[0-9]*\(\], <\\\!--Ma_P_ST1_vCPU_Used-->\)/\1777\2/" <file

各括弧でキャプチャされた文字列を\1使用してください。\2

答え2

これは役に立ちますか?

sed '/!--Ma_P_ST1_vCPU_Used-->/ s/170/555/' file
"['Used', 555], <c\!--Ma_P_ST1_vCPU_Used-->" 

正しい行を検索し、170 を 555 に置き換えます。

関連情報