この狂気をどうしたら取り替えられるでしょうか?

この狂気をどうしたら取り替えられるでしょうか?

インスタンスを置き換えるにはどうすればいいですか?

id="ogwb"

id="ogwb" name="ogwb" value="<?php echo htmlspecialchars($_POST['ogwb']); ?>"

使用sedまたは代替ですか?

答え1

適切なコマンド:

sed -E 's/^id="([^"]+)"$/& name="\1" value="<?php echo htmlspecialchars($_POST['"'\1'"']); ?>"/'

一重引用符を埋め込む必要がある場合、二重引用符から一重引用符に切り替わることに注意してください。Bash では一重引用符の中に一重引用符を埋め込むことはできません。

しかし、これは問題ではありません。引用符は文字列ではないからです。ターミネータBash では、これらは引用符の異なるスタイル間の単なる区切り文字です。つまり、

some-command 'This is in a single quoted string'"'"'This is another quoted string, but is part of the same argument to some-command'
                                                ^^^
                             This single quote is inside of double quotes.

シェルの引用が とどのように相互作用するかを気にしたくない場合はsedsedコマンドをファイルに記述して で呼び出しますsed -f

答え2

echo 'id="ogwb"' | sed 's,id=\(.*\),id=\1 name=\1 value="<?php echo htmlspecialchars($_POST[\1]); ?>",'

関連情報