Estoy tratando de crear un script sed para modificar los constructores en un par de cientos de archivos php del estilo php4 al estilo php5. Estoy progresando, pero tengo un problema para sacar las referencias de sed. Aquí hay un archivo de ejemplo:
<?php
class Dashboard extends CI_Controller {
function Dashboard()
{
parent::Controller();
}
}
El objetivo es tomar el nombre de la clase desde la primera línea (que tendrá 0 o 1 líneas en blanco entre él y el
Esto funciona como se esperaba:
sed -En '/^class\ ([a-zA-Z0-9]+)/ {
n;H;x;n;H;x;'s/Dash/Derp/';P
}' dashtest.php
Dando la salida:
function Derpboard()
Pero, ¿por qué esto no reemplaza Dashboard con __construct ?:
sed -En '/^class\ ([a-zA-Z0-9]+)/ {
n;H;x;n;H;x;'s/\1/__construct/';P
}' dashtest.php
Cualquier otro consejo sobre esto sería bienvenido. Mi intención es envolver esto en un script de shell que está haciendo un montón de otros cambios al migrar desde una versión antigua de codeIgnitor php framework a la versión actual.