Reemplace la cadena que se encuentra dos líneas antes del patrón coincidente.
Tengo un archivo config.js grande y me gustaría reemplazar default:false,
por default:true,
que se encuentra en la parte superior de field:'$scope.keepEffort'
. He intentado varias soluciones de comandos sed
, pero nada parece funcionar.
{
default:false,
enabled:true,
field:'criticalPath',
filter:false,
filterValue:'',
id:'show-critical-path',
operator:'colorize'
},{
default:false,
enabled:true,
field:'$scope.keepEffort',
filter:false,
filterValue:'',
id:'effort-constant',
operator:'var'
},{
default:false,
enabled:true,
field:'$scope.automaticProgress',
filter:false,
filterValue:'',
id:'automatic-progress',
operator:'var'
},{
default:false,
enabled:true,
field:'groupView',
filter:false,
filterValue:'',
id:'gantt-group-view',
operator:'var'
},{
davy.ai
Para reemplazar
default:false,
pordefault:true,
, que se encuentra encima defield:'$scope.keepEffort'
en un archivo grandeconfig.js
, se puede usar el comandosed
con una expresión regular para hacer coincidir el patrón y reemplazarlo con la cadena deseada. El comando puede ser:Explicación:
s/
– comando de sustitución en sed para reemplazar el patróndefault:false,.*field:\'\$scope\.keepEffort\'\;/
– expresión regular para hacer coincidir el patrón, que incluyedefault:false,
seguido de cualquier carácter.*
y la cadena exactafield:'$scope.keepEffort';
default:true,\n\t\t\t\tfield:\'\$scope\.keepEffort\'\;/
– cadena de reemplazo, que incluyedefault:true,
seguido de una nueva línea\n
y 4 tabulaciones\t
, y la misma cadenafield:'$scope.keepEffort';
g
– indicador global para reemplazar todas las ocurrencias en el archivoconfig.js
– nombre del archivo a modificar en su lugar (indicador-i
)Este comando debería funcionar para el formato de archivo dado y reemplazar la cadena según sea necesario. Sin embargo, siempre se recomienda hacer una copia de seguridad del archivo antes de modificarlo con sed.