
インスタンスを置き換えるにはどうすればいいですか?
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.
シェルの引用が とどのように相互作用するかを気にしたくない場合はsed
、sed
コマンドをファイルに記述して で呼び出しますsed -f
。
答え2
echo 'id="ogwb"' | sed 's,id=\(.*\),id=\1 name=\1 value="<?php echo htmlspecialchars($_POST[\1]); ?>",'