
¿Cómo puedo reemplazar una instancia de
id="ogwb"
con
id="ogwb" name="ogwb" value="<?php echo htmlspecialchars($_POST['ogwb']); ?>"
¿ Usando sed
o 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 sed
comando 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]); ?>",'