我怎样才能取代这种疯狂呢?

我怎样才能取代这种疯狂呢?

我怎样才能替换一个实例

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]); ?>",'

相关内容