我怎样才能替换一个实例
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.
如果您不想担心 shell 引用如何与 交互sed
,请将sed
命令粘贴在文件中并使用 调用它sed -f
。
答案2
echo 'id="ogwb"' | sed 's,id=\(.*\),id=\1 name=\1 value="<?php echo htmlspecialchars($_POST[\1]); ?>",'