
Como posso substituir uma instância de
id="ogwb"
com
id="ogwb" name="ogwb" value="<?php echo htmlspecialchars($_POST['ogwb']); ?>"
usando sed
ou alternativa?
Responder1
Um comando adequado:
sed -E 's/^id="([^"]+)"$/& name="\1" value="<?php echo htmlspecialchars($_POST['"'\1'"']); ?>"/'
Observe que isso muda de aspas duplas para aspas simples quando é necessário incorporar aspas simples. Você não pode incorporar aspas simples dentro de aspas simples no Bash. Período.
Mas isso não importa, porque aspas não são stringsterminadoresno Bash, eles são apenas delimitadores entre diferentes estilos de cotação. Então:
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.
Se você não quiser se preocupar com a interação das citações do shell com sed
, coloque seu sed
comando em um arquivo e chame-o com sed -f
.
Responder2
echo 'id="ogwb"' | sed 's,id=\(.*\),id=\1 name=\1 value="<?php echo htmlspecialchars($_POST[\1]); ?>",'