¿Cómo puedo reemplazar esta locura?

¿Cómo puedo reemplazar esta locura?

¿Cómo puedo reemplazar una instancia de

id="ogwb"

con

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

¿ Usando sedo alternativa?

Respuesta1

Un comando adecuado:

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

Tenga en cuenta que esto cambia de comillas dobles a comillas simples cuando es necesario incorporar comillas simples. No se pueden incrustar comillas simples dentro de comillas simples en Bash. Período.

Pero esto no importa, porque las comillas no son cadenas.terminadoresen Bash, son sólo delimitadores entre diferentes estilos de citas. Entonces:

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.

Si no quiere preocuparse por cómo interactúan las comillas del shell con sed, coloque su sedcomando en un archivo y llámelo con sed -f.

Respuesta2

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

información relacionada